NIC bonding/teaming(绑定/分组) 主要用于由于以太网故障转移问题而无法承受连接松动的情况,并且它还有许多其他优点,例如分配带宽、容错等
让我们从配置步骤开始
确保您的 Linux 机器中有两个(至少)物理以太网卡。
使用如下所示的选项编辑两个以太网卡的配置文件
# less /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 MASTER=bond0 USERCTL=no SLAVE=yes BOOTPROTO=none TYPE=Ethernet ONBOOT=yes
# less /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no
在 /etc/sysconfig/network-scripts/ifcfg-bond0 中创建一个新文件,参数如下
# less /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.0.100 GATEWAY=192.168.0.1 NETMASK=255.255.255.0 USERCTL=no BOOTPROTO=none ONBOOT=yes PEERDNS=yes
RedHat Linux 5
在下面提到的文件中追加/进行以下更改
# vi /etc/modprobe.conf alias bond0 bonding options bond0 mode=1 miimon=100
RedHat Linux 6
我们将找不到 modprobe.conf 文件,因此我们需要在 ifcfg-bond0 配置文件中定义绑定选项,如下所示
# less /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.0.100 GATEWAY=192.168.0.1 NETMASK=255.255.255.0 DNS1=8.8.8.8 BONDING_OPTS="miimon=100 mode=1" USERCTL=no PEERDNS=yes BOOTPROTO=none ONBOOT=yes
在这里,我们可以为 mode 和 miimon 使用不同的值
可用于 NIC 绑定的不同类型的模式有哪些?
我们可以为各种目的配置 NIC Teaming。
因此,在配置时,我们必须指定要使用 NIC Teaming 的目的。
以下是可用选项列表
balance-rr 或者 0 :为容错和负载平衡设置循环策略。
从第一个可用的开始,在每个绑定的从接口上依次接收和发送传输。
active-backup 或者 1:设置容错的主动备份策略。
通过第一个可用的绑定从接口接收和发送传输。
仅当活动的绑定从接口出现故障时,才使用另一个绑定从接口。
balance-xor 或者 2:为容错和负载平衡设置异或者(异或者)策略。
使用这种方法,接口将传入请求的 MAC 地址与其中一个从属 NIC 的 MAC 地址相匹配。
一旦建立了链路,就会从第一个可用接口开始按顺序发送传输。
broadcast 或者 3:为容错设置广播策略。
所有传输都在所有从接口上发送。
802.3ad 或者 4:设置 IEEE802.3ad 动态链路聚合策略。
创建共享相同速度和双工设置的聚合组。
在活动聚合器中的所有从设备上发送和接收。
需要符合 802.3ad 的交换机
balance-tlb 或者 5:为容错和负载平衡设置传输负载平衡 (TLB) 策略。
根据每个从接口上的当前负载分配出站流量。
当前从站接收传入流量。
如果接收从站出现故障,另一个从站将接管故障从站的 MAC 地址。
balance-alb 或者 6:为容错和负载平衡设置和主动负载平衡 (ALB) 策略。
包括 IPV4 流量的传输和接收以及负载平衡。
通过ARP协商实现接收负载均衡
NICTeaming 中的 miimon 是什么?
miimon 用于指定(以毫秒为单位)发生 MII 链接监控的频率。
如果需要高可用性,这很有用,因为 MII 用于验证 NIC 是否处于活动状态。
要验证特定 NIC 的驱动程序是否支持 MII 工具,请以 root 身份键入以下命令:
# ethtool | grep "Link detected:"
# ethtool eth0 | grep "Link detected:" Link detected: yes # ethtool eth1 | grep "Link detected:" Link detected: yes
因此,这里演示中,我们将使用模式 1 进行容错的 NIC 绑定
现在是时候加载绑定模块了
# modprobe bonding
重新启动网络接口以使更改生效
# service network restart
使用以下命令验证配置是否正常工作
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 5f:5g:56:3v:23:54 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4f:76:23:v4:76:f6
检查网络状态
# ifconfig bond0 Link encap:Ethernet HWaddr R5:4G:45:6H:14:54 inet addr:192.168.0.100 Bcast:192.168.0.1 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:675166546 errors:0 dropped:0 overruns:0 frame:0 TX packets:60123345 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:717558660669 (668.2 GiB) TX bytes:680121390699 (633.4 GiB) eth0 Link encap:Ethernet HWaddr 5F:5G:56:3V:23:54 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:675130834 errors:0 dropped:0 overruns:0 frame:0 TX packets:601230970 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:717553120481 (668.2 GiB) TX bytes:680121390699 (633.4 GiB) Interrupt:169 Memory:96000000-96012800 eth1 Link encap:Ethernet HWaddr 4F:76:23:V4:76:F6 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:35302 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5540188 (5.2 MiB) TX bytes:0 (0.0 b) Interrupt:122 Memory:94000000-94012800