Linux 网卡Bonding配置
当在Linux系统上使用Bonding技术时,实际上是将多个物理网络接口(也称为Slave接口)绑定在一起,形成一个虚拟的Bond接口。这个Bond接口可以提高网络的可靠性和性能,有助于负载均衡和容错。
配置Linux系统上Bonding的步骤:
步骤 1:加载Bonding模块
在Linux内核中,Bonding功能是通过一个模块实现的,因此首先需要确保该模块已加载。可以使用以下命令加载Bonding模块:
modprobe bonding
如果要使这个设置永久生效,可以将bonding添加到系统的模块配置文件中,例如,在/etc/modules中添加一行:
bonding
步骤 2:配置Bond接口
编辑Bond接口的配置文件,通常是/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-bondX(X是Bond接口的编号)。在配置文件中,指定Bond接口的基本信息和所使用的Bonding模式。
DEVICE=bond0
TYPE=Bond
# mode=balance-rr:这是Bonding接口的工作模式,指定了使用的负载均衡模式。
# 在这里,balance-rr 表示轮询模式(Round Robin)。
# 在轮询模式下,传输的数据包在可用的Slave接口之间轮流分配,实现负载均衡。这可以增加带宽,并提高网络性能。
# miimon=100:这是监测间隔的设置。miimon 指定了Bond接口监测Slave接口是否正常工作的时间间隔,单位是毫秒。在这里,miimon=100 表示每100毫秒检查一次Slave接口的状态。如果在这个间隔内没有从Slave接口收到任何数据包,Bond接口将认为该接口出现故障,并将流量从故障的接口转移到其他正常工作的接口。
# BONDING_OPTS="mode=balance-rr miimon=100"
# mode=4:这指定了Bonding接口的工作模式。在这里,mode=4 表示使用的是802.3ad(LACP)模式。
# 这是一种聚合模式,使用IEEE 802.3ad标准的链路聚合控制协议(LACP)。在这种模式下,多个物理接口被聚合成一个逻辑接口,以提高带宽和容错性。
# miimon=100:这是监测间隔的设置,与之前解释的一样。miimon=100 表示每100毫秒检查一次Slave接口的状态。
# xmit_hash_policy=layer3+4:这个选项指定了传输哈希的策略,用于决定如何在Slave接口之间分配传输的数据包。
# 在这里,layer3+4 表示使用Layer 3(IP地址)和Layer 4(端口号)信息进行哈希计算。这样可以在负载均衡时更精确地分配流量。
# lacp_rate=1:这是LACP协议的速率设置。lacp_rate=1 表示LACP的协商速率为快速(fast),
# 也就是每秒发送一次LACP协商包。这有助于更快地检测链路状态的变化。
# 这个配置的目的是在Bond接口上启用802.3ad(LACP)模式,使用特定的传输哈希策略,
# 并配置快速的LACP协商速率以提高链路的快速故障检测和恢复。
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4 lacp_rate=1"
IPADDR=IP
NETMASK=IP
GATEWAY=IP
BOOTPROTO=none
ONBOOT=yes
DEVICE=bond0 #指定Bond接口的名称。
TYPE=Bond #指定接口类型为Bond。
BONDING_MASTER=yes #表示这是一个Bond接口。
BOOTPROTO=none #禁用自动配置IP地址。
ONBOOT=yes #表示接口在系统启动时自动激活。
步骤 3:配置Slave接口
配置每个物理网络接口(Slave接口),这些接口将绑定到Bond接口上。编辑每个Slave接口的配置文件,通常是/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-ethX。
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
DEVICE=eth0 #指定物理接口的名称。
TYPE=Ethernet #指定接口类型为以太网。
BOOTPROTO=none #禁用自动配置IP地址。
ONBOOT=yes #表示接口在系统启动时自动激活。
MASTER=bond0 #指定接口绑定到哪个Bond接口上。
SLAVE=yes #表示这是一个Slave接口。
重复以上步骤,为每个物理网络接口创建相应的Slave接口。
步骤 4:重启网络服务或系统
根据不同的Linux发行版,使用适当的命令来重启网络服务,以应用新的配置。例如:
service network restart # 对于Red Hat / CentOS
systemctl restart network # 对于Systemd-based系统
或者,也可以直接重启系统。
请注意,以上步骤中的配置文件路径和文件名可能会因Linux发行版的不同而有所变化。确保查阅并根据你的系统进行适当的配置。如果系统使用了NetworkManager,可能需要禁用它或相应地配置。
配置结果
· 用6张物理网卡分别做2个bond对应内网和外网
ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 内网IP netmask 255.255.255.192 broadcast xxxxx
inet6 fe80::22e:c7ff:fede:bbec prefixlen 64 scopeid 0x20<link>
ether 00:2e:c7:de:bb:ec txqueuelen 1000 (Ethernet)
RX packets 246355998028 bytes 208303790741491 (189.4 TiB)
RX errors 0 dropped 3816775 overruns 0 frame 0
TX packets 202598700106 bytes 93802287439078 (85.3 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 公网IP netmask 255.255.255.192 broadcast xxxxx
inet6 fe80::6e44:2aff:fe11:7e7a prefixlen 64 scopeid 0x20<link>
ether 6c:44:2a:11:7e:7a txqueuelen 1000 (Ethernet)
RX packets 24873307632 bytes 16810009736133 (15.2 TiB)
RX errors 0 dropped 1580508 overruns 0 frame 0
TX packets 28258917875 bytes 23112510171897 (21.0 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp2s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:2e:c7:de:bb:ec txqueuelen 1000 (Ethernet)
RX packets 124158342391 bytes 104466083013418 (95.0 TiB)
RX errors 0 dropped 2640312 overruns 0 frame 0
TX packets 98452382047 bytes 45841408859483 (41.6 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp2s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:2e:c7:de:bb:ec txqueuelen 1000 (Ethernet)
RX packets 122197655638 bytes 103837707728342 (94.4 TiB)
RX errors 0 dropped 1176462 overruns 0 frame 0
TX packets 104146318060 bytes 47960878579921 (43.6 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp4s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 6c:44:2a:11:7e:7a txqueuelen 1000 (Ethernet)
RX packets 11803693682 bytes 7781711756799 (7.0 TiB)
RX errors 0 dropped 374624 overruns 0 frame 0
TX packets 14381029459 bytes 11931791763557 (10.8 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp4s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 6c:44:2a:11:7e:7a txqueuelen 1000 (Ethernet)
RX packets 13069613950 bytes 9028297979334 (8.2 TiB)
RX errors 0 dropped 1205884 overruns 0 frame 0
TX packets 13877888419 bytes 11180718408762 (10.1 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp5s0f0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b4:96:91:25:eb:2c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp5s0f1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b4:96:91:25:eb:2e txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
落霞与孤鹜齐飞,秋水共长天一色。