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
posted @ 2024-01-23 10:35  紫系流月  阅读(766)  评论(0编辑  收藏  举报