【Linux网络】系统调优之聚合链路bonding,可以实现高可用和负载均衡

一、什么是多网卡绑定

二、聚合链路的工作模式

三、实操创建bonding设备(mode=1)

1、实验

2、配置文件解读

 3、查看bonding状态,验证bonding的高可用效果

三、nmcli实现bonding


一、什么是多网卡绑定

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

总结一下特点:

1、增加链路带宽:通过将多个物理接口捆绑为一个逻辑接口,可以有效地增加逻辑链路的带宽。

2、提高链路稳定性(高可用):配置了链路聚合之后,如果一个网卡接口发生故障,该网卡口的物理链路会把流量切换到另一条链路上,从而提高设备之间链路的可靠性。

3、实现负载均衡(分摊流量):一个聚合口可以把流量分散到多个不同的成员口上,通过成员链路把流量发送到同一个目的地,将网络产生拥塞的可能性降到最低。

4、利用率比较低:

二、聚合链路的工作模式

mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发。负载均衡—所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。需要交换机进行端口绑定。
mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口才转发数据报文。容错能力—只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。无负载均衡—此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。
mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文负载均衡—基于指定的传输HASH策略传输数据包。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器,由于只有一个网关,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。需要交换机配置为port channel
mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。
mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通过该协议自动进行维护。负载均衡—基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链路质量。需要交换机支持LACP协议
mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口口出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率

mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。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

三、实操创建bonding设备(mode=1)

1、实验

实验思路:添加2张新网卡为ens36、ens37;设置一个虚拟的mode1的bonding名为bond0,ip地址为192.168.20.188,bond0作为master主,ens36和ens37作为slave从属;

2、配置文件解读

 前期准备

[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#ls
[root@localhost network-scripts]#
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-bond0
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-slave-ens36
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-slave-ens37

 网卡配置即重启网络

[root@localhost network-scripts]#vim ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.20.188
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
//bonding选项配置,mode=1表示使用bond的类型
//miimon=100表示每100ms监测一次网卡连接状态,如果有其中一条不通则转入另一张网卡
//fail_over_mac=1表示启用快速切换(fast failover)功能。该选项允许在主链路故障时,备份链路快速地接管数据传输,以减少故障对网络连接的影响。
//表示如果负载均衡设备的物理端口出现故障,设备会通过修改备份链路的MAC地址,避免发生环路,保护备份链路不受影响。

 
[root@localhost network-scripts]#vim ifcfg-slave-ens36
DEVICE=ens36
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@localhost network-scripts]#vim ifcfg-slave-ens37
DEVICE=ens37
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@localhost network-scripts]#systemctl restart network

 3、查看bonding状态,验证bonding的高可用效果

##查看bond0信息
[root@localhost network-scripts]#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens36    ##现在活动的是ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:35:10:6b
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:35:10:75
Slave queue ID: 0

##关闭正在活动的ens36网卡
[root@localhost network-scripts]#ifdown ens36
成功断开设备 'ens36'。

##再次查看bond0状态
[root@localhost network-scripts]#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens37  ##现在活动的是ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:35:10:75
Slave queue ID: 0

##再次上线ens36
[root@localhost network-scripts]#ifup ens36
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/31)

##查看状态,现在还是ens37活动
[root@localhost network-scripts]#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:35:10:75
Slave queue ID: 0

Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:35:10:6b
Slave queue ID: 0
[root@localhost network-scripts]#

三、使用nmcli命令实现bonding(这里取名bond1)

#添加bonding接口
nmcli con add type bond con-name mybond1 ifname bond1 mode active-backup ipv4.method manual ipv4.addresses 192.168.20.166/24 

#添加从属接口
nmcli con add type bond-slave ifname ens33 master bond1
nmcli con add type bond-slave ifname ens36 master bond1

#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens36

#启动绑定
nmcli con up mybond1

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux链路聚合是一种将多个网络接口绑定在一起,形成一个虚拟的高速网络接口的技术。它可以提高网络带宽和可靠性,实现负载均衡和故障转移。在Linux系统中,可以使用bonding驱动程序来实现链路聚合。配置步骤包括:安装bonding驱动程序、创建bonding接口、配置网络接口、设置bonding模式和参数等。常用的bonding模式有:mode 0(负载均衡)、mode 1(主备模式)、mode 4(802.3ad模式)等。配置完成后,可以通过ifconfig或ip命令查看bonding接口的状态和信息。 ### 回答2: 什么是链路聚合链路聚合是一种利用网络传输的多个线路,将它们捆绑在一起形成一个更快,更可靠的高速链路的技术。它也被称为带宽汇聚或网络接口绑定。由于链路聚合网络传输的多个线路的带宽合并在一起,因此可以提高网络的带宽,同时减少故障单点。 如何在 Linux 上进行链路聚合配置? 在 Linux 系统上,可以通过网络一流的工具 “iproute2” 来实现链路聚合。下面是在 Linux 中配置链路聚合的基本步骤: 1. 安装 iproute2 工具: iproute2 是一套用于 Linux 内核网络层的控制工具,提供了很多网络配置和路由功能。运行以下命令安装: sudo apt-get install iproute2 2. 确认系统支持链路聚合: 运行以下命令确认 您的系统已经安装路由表规则: ip rule show 如果输出信息中没有任何相应规则,则表明你的系统不支持链路聚合。 3. 为链路聚合设置交换机: 链路聚合需要一台交换机来协调多个网络接口的传输。确保您的交换机支持链路聚合,并且已经正确配置。否则在进行网络聚合时,可能会面临网络延迟、故障等问题。 4. 创建聚合群组: 在 Linux 上可以使用bondctl或者ip命令来创建聚合群组。创建聚合群组时可以确定聚合类型(如链接合成、平衡RR等)和聚合模式(如主备、平衡对称、平衡TLB、平衡ALB等)。 下面是一个例子: sudo ip link add bond0 type bond miimon 100 mode 802.3ad 在这个命令中,创建了一个 bond0 接口,类型为 IEEE 802.3ad(即静态链路聚合协议),miimon 设置心跳检查的时间间隔。 Mode 指定链路类型,802.3ad 是一种动态加入的链路聚合协议,可以根据可利用的物理链路的数量动态分配流量,提供了最高的聚合效率。 5. 添加网络接口到聚合群组: 将网络接口添加到刚刚创建的聚合群组中。 命令示例: sudo ip link set enp0s3 master bond0 sudo ip link set enp0s8 master bond0 在这些命令中,我们将 enp0s3 和 enp0s8 接口加入了 bond0 网络聚合群组中。 6. 配置路由表规则: 在 Linux 上,添加多条路由表规则以允许网络接口在规则更改时通畅地切换。例如: ip route add default dev bond0 通过这些命令,我们可以配置 Linux 中的链路聚合。它可以大大提高网络传输的速度,减少系统中的单点故障。 ### 回答3: 链路聚合(Link Aggregation)又称为端口绑定,是将两个或多个物理网卡连接成一个逻辑的、高带宽的、高可靠性的连接的技术。在Linux系统中,链路聚合可以通过bonding模块实现。本文将讨论如何在Linux中配置链路聚合。 1.检查网卡是否支持链路聚合Linux中,可以使用命令“ethtool”来检查网卡是否支持链路聚合。例如,输入“ethtool eth0”就可以查看eth0网卡是否支持链路聚合。 2.安装bonding模块 在安装bonding模块之前,需要安装一些相关的软件包,例如ethtool、lshw等。安装完这些软件包之后,可以使用“modprobe bonding”命令来加载bonding模块。 3.创建bonding接口 通过创建bonding接口,可以将两个或多个物理网卡连接成一个逻辑的、高带宽的、高可靠性的连接。可以使用如下命令创建bonding接口: ifconfig bond0 192.168.0.10 netmask 255.255.255.0 up 其中,bond0是bonding接口的名称,192.168.0.10是IP地址,255.255.255.0是子网掩码。 4.设置bonding模式 在创建bonding接口之后,需要设置bonding模式。Linux中支持七种bonding模式,如下所示: mode=0(balance-rr模式):轮询模式,数据包依次发到不同的网卡上。适用于负载低、带宽要求高的情况。 mode=1(active-backup模式):主备模式,只有其中一个网卡处于工作状态,当主网卡失效时,备网卡会自动接管。适用于稳定性要求高的情况。 mode=2(balance-xor模式):使用异或算法将MAC地址的奇数位和偶数位分别与网卡绑定。适用于环形网络拓扑结构。 mode=3(broadcast模式):所有从bonding接口收到的数据包都会同时发送给所有的物理网卡。适用于小型网络中的广播流量。 mode=4(802.3ad模式):使用IEEE 802.3ad链路聚合控制协议,通过LACP的协商,自适应用指定的方式进行链路聚合。通常用于多台服务器之间的链路聚合。 mode=5(balance-tlb模式):通过流量控制从主网卡导出一部分流量给备网卡,可以实现负载均衡和容错。适用于链路负载较高的情况。 mode=6(balance-alb模式):根据MAC地址进行负载均衡,动态地将MAC地址和网卡绑定在一起。可实现更高的带宽利用率和容错能力。 可以将这些模式中的任意一种设置为bonding的模式。例如,设置为mode=1,可以使用如下命令: echo 1 > /sys/class/net/bond0/bonding/mode 5.添加物理网卡 在创建bonding接口之后,还需要将物理网卡添加到bonding接口中。可以使用如下命令添加eth0和eth1网卡: echo "+eth0" > /sys/class/net/bond0/bonding/slaves echo "+eth1" > /sys/class/net/bond0/bonding/slaves 6.重新启动网络服务 完成以上配置后,需要重新启动网络服务,使用如下命令: systemctl restart network 或者 /etc/init.d/network restart 完成以上步骤后,就可以使用bond0接口来访问网络。这样就能够实现链路聚合,提高网络带宽和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维菜鸟XY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值