Linux多网卡绑定实现负载均衡详解

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。

目录

1、bond的作用

2、Bonding聚合链路工作模式

2.1 mod=0 ,即:(balance-rr) Round-robin policy(平衡轮询环策略)

2.2 mod=1,即: (active-backup) Active-backup policy(主-备份策略)

3.2 mod=2,即:(balance-xor) XOR policy(平衡策略)

3.4 mod=3,即:broadcast(广播策略)

3.5 mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

3.6 mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

3.7 mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

3、网卡聚合实验

3.1 手动配置文件

3.2 nmcli实现bonding


1、bond的作用

  1. 主备模块:可以解决单点故障
  2. 双主模式:可以分摊流量

2、Bonding聚合链路工作模式

2.1 mod=0 ,即:(balance-rr) Round-robin policy(平衡轮询环策略

  1. 聚合口数据报文按包轮询从物理接口转发。即传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传 输完毕)

  2. 负载均衡:所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

  3. 性能问题:一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。

  4. Bond0在大压力的网络传输下,性能增长的并不是很理想。

  5. 需要交换机进行端口绑定。

2.2 mod=1,即: (active-backup) Active-backup policy(主-备份策略)

  1. 只有Active状态的物理接口才转发数据报文。
  2. 容错能力:只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。
  3. 无负载均衡:此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。

3.2 mod=2,即:(balance-xor) XOR policy(平衡策略)

  1. 聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文。
  2. 负载均衡:基于指定的传输HASH策略传输数据包。
  3. 容错能力:这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
  4. 性能问题:该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器,由于只有一个网关,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。
  5. 需要交换机配置为port channel

3.4 mod=3,即:broadcast(广播策略)

这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。

3.5 mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

  1. 在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通过该协议自动进行维护。
  2. 负载均衡—基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。
  3. 容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链路质量。
  4. 需要交换机支持LACP协议

3.6 mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口口出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率

3.7 mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

  1. 该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。
  2. 接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
  3. mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量

常用的模式为 0,1,3,6
mode 1、5、6 不需要交换机设置
mode 0、2、3、4需要交换机设置
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel

3、网卡聚合实验

3.1 手动配置文件

 bond(绑定)是指将两个或多个物理网卡虚拟化为一个逻辑接口的过程,以实现冗余、负载均衡或增加带宽。

①将网卡的名称改成传统网卡命名方式,修改/etc/default/grub文件修改,添加net.ifname=0

②为grub2生成配置文件

重启reboot

3.2 nmcli实现bonding

nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.80.100/24     
#添加bonding接口nmcli con add type bond-slave ifname ens33 master bond0
nmcli con add type bond-slave ifname ens36 master bond0
#添加从属接口
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens36    
#要启动绑定,则必须首先启动从属接口nmcli con up mybond0
#启动绑定

①添加bonding接口

②添加从属接口

 ③启动绑定,首先启动从属接口

④切换到目录下并查看

 

 ⑤开启绑定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型,并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类,从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料,希望能对你有所帮助。 封面图片: Dalle3 …

win开发Golang

目录 编译exeVscode开发 编译exe go build main.go编译的exe文件点击后会有cmd弹窗,如果去掉弹框,使用编译命令: go build -ldflags"-Hwindowsgui" -o name.exe main.go 或 go build -ldflags"-s -w -H windowsgui" -…

软信天成:数据安全管理解决方案分享

近年来,随着数据环境日趋复杂多变和潜在的数据隐私泄露风险潜伏,如何确保企业数据安全已成为众多企业亟待面对与妥善处理的重要问题。 为了应对这一严峻的现实挑战,软信天成凭借专业的知识体系和丰富的实战经验积累,总结出了一套…

Java多线程并发篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、ReadWriteLock 读写锁二、共享锁和独占锁三、重量级锁(Mutex Lock)四、轻量级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

【iconfont图标】快速全选

https://www.iconfont.cn/collections/detail?spma313x.collections_index.i1.d9df05512.9f173a81W5lQnf&cid19238 1.控制台粘贴回车 var jdocument.createElement(script);j.setAttribute("src", https://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js);…

Golang 打包

构建/打包 使用 Go 的构建命令: go build在包含 main 函数的包的目录下执行,它会生成一个可执行文件。文件名默认与包所在的目录名相同,但也可以使用 -o 选项来指定输出的文件名 交叉编译 Windows 环境下进行交叉编译以构建其他平台的可执…

Spring MVC中的一些常用注解

目录 RequestMapping 实现路由映射 限制请求方式 PathVariable 从url中获取变量的值 更改绑定参数的名字 RequestParam 可以传递集合 更改绑定参数的名字 可修改是否为必传参数 RequestBody 获取请求正文的内容 可修改是否为必传参数 RequestPart 可以支持上传…

ubuntu服务日志分析——journalctl

简介 对于使用 systemd 服务的 Linux 发行版来说,journalctl 命令提供了详细且经过筛选的日志视图,是获取 Linux 重启历史记录的得力工具 systemd帮助我们记录了系统在运行过程中的所有日志信息,无论是重启前还是重启后,都会有保…

Animation的坑,播放的时候隐藏了UI界面,结果再次把UI界面显示出来后,就会卡在动画的某处

local animation obj:GetComponent("Animation") local state animation.this:get(name) if state then state.speed state.length end animation:Play(name);

new mars3d.layer.GeoJsonLayer({实现图标点billboard贴模型聚合效果

说明: 1.【mars3d】的依赖库cesium本身是不支持贴地/贴模型操作的 2.sdk内部异步计算了数据的贴地/高度值之后,更新到图层上实现贴地/贴模型效果的 3.相关的示例链接: 1.功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 4.相关的计算…

【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(15)篇,也是流量控制系列的第(2)篇。点击上方关注,深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多,前端页面总是用到了jQuery&#x…

lvgl简介

LVGL(Light and Versatile Graphics Library)是一个开源的图形用户界面库,旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统,可以在不同的操作系统、微控制器和图形加速器上运行。LVGL的核心…

1.go安装及相关配置

目录 概述下载基本命令Go build环境设置 结束 概述 下载 官网速递 选择 1.20.x 一个是因为是次新版本,另一个,mac 系统是 10.13.6 ,1.20.x 是最后一个支持此版本的。 环境变量 GOROOT go的安装目录(将go安装到哪里 which go、cat /etc/p…

【嵌入式Android各种调试命令】

控制台下 写mac跟sn #写mac su echo 1 > /sys/class/unifykeys/attach echo mac > /sys/class/unifykeys/name echo 00:22:6D:C6:9A:57 > /sys/class/unifykeys/write cat /sys/class/unifykeys/read#写sn su echo 1 > /sys/class/unifykeys/attach echo usid &g…

高并发IO底层原理

1 概述 IO底层原理是隐藏在Java编程知识之下的基础知识,是开发人员必须掌握的基本原理。本文从操作系统的底层原理入手,通过图文的方式为大家深入剖析高并发IO的底层原理,并介绍如何通过设置来让操作系统支持高并发。 2 IO读写的基本原理 为…

MySQL 8.0中过时的功能(二)

max_length_for_sort_data系统变量由于优化器的变更而被弃用,因为这个变量已经过时并且没有任何效果。用于对连接进行压缩的以下传统参数已经被弃用: - --compress客户端命令行选项; - mysql_options() C API函数的MYSQL_OPT_COMPRESS选项; - slave_comp…

文件模块常用api

文件模块常用api 文件夹常用操作 文件夹操作 fs.mkdir fs.rmdir 需要是空目录 题目:递归删除目录* 串行/并行删除文件*

介绍异或(XOR)运算

异或(XOR)是一种逻辑运算符,用于比较两个二进制数的对应位。它的运算规则如下: 如果两个对应位的值相同,结果为0。如果两个对应位的值不同,结果为1。 异或运算的原理基于以下观察: 反转性质&a…