Linux 系统上的以太网通道绑定又称为 NIC 组合
以太网通道绑定可将两个或多个网络接口卡 (NIC) 集成到单个虚拟 NIC 卡上,这可能会增加带宽并提供NIC 卡冗余。这是在生产系统中实现冗余链路、容错或负载平衡网络的好方法。如果一个物理NIC宕机或拔出,它会自动将资源转移到其他NIC卡。 通道/NIC绑定将在内核中绑定驱动程序的帮助下工作。我们将使用两个 NIC 来演示相同的内容。
几乎有六种类型的通道绑定类型可用。在这里,我们将仅回顾两种流行且广泛使用的通道债券。
- 0:负载平衡(循环):流量按顺序或循环方式从两个 NIC 传输。该模式提供负载平衡和容错。
- 1:Active-Backup:在任何给定时间点只有一个从属 NIC 处于活动状态。仅当活动从属网卡出现故障时,其他接口卡才会处于活动状态。
创建以太网通道绑定
我们有两个网络以太网卡,即eth1和eth2,其中将创建bond0用于绑定目的。需要超级用户权限才能执行以下命令。
负载平衡(循环)
配置eth1
在配置文件中将参数 MASTER bond0 和 eth1 接口作为 SLAVE 提及,如下所示。
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
配置eth2
此处还将参数 MASTER bond0 和 eth2 接口指定为 SLAVE。
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
创建 bond0 配置
创建bond0并在名为ifcfg-bond0的“/etc/sysconfig/network-scripts/”目录中配置通道绑定接口。
以下是通道绑定配置文件示例。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"
注意:在上述配置中,我们选择了绑定选项mode=0,即Round-Robin和miimon=100 (轮询间隔 100 毫秒)。
让我们看看使用 ifconfig 命令创建的接口,该命令显示“bond0”作为MASTER运行,接口“eth1”和“eth2”强>”作为奴隶运行。
ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
inet addr:192.168.246.130 Bcast:192.168.246.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1231555 (1.1 MiB) TX bytes:1622391 (1.5 MiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1196931 (1.1 MiB) TX bytes:819042 (799.8 KiB)
Interrupt:19 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:385 errors:0 dropped:0 overruns:0 frame:0
TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34624 (33.8 KiB) TX bytes:803583 (784.7 KiB)
Interrupt:19 Base address:0x2080
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:480 (480.0 b) TX bytes:480 (480.0 b)
重新启动网络服务和接口应该没问题。
service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
检查债券的状态。
watch -n .1 cat /proc/net/bonding/bond0
样本输出
以下输出显示绑定模式为负载平衡 (RR) 以及eth1 和 eth2 > 正在出现。
Every 0.1s: cat /proc/net/bonding/bond0 Thu Sep 12 14:08:47 2013
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0
创建活动备份
在这种情况下,Slave接口保持不变。绑定接口 ifcfg-bond0 中只有一个更改,而不是“0”,它将是“1”,如下所示。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"
重新启动网络服务并检查绑定状态。
service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
使用命令检查绑定状态。
watch -n .1 cat /proc/net/bonding/bond0
样本输出
绑定模式显示容错(主动备份)并且从属接口已启动。
Every 0.1s: cat /proc/n... Thu Sep 12 14:40:37 2013
Ethernet Channel Bonding Driver: v3.6.0 (September 2
6, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0
注意:手动向下和向上从属接口来检查通道绑定的工作情况。请参阅下面的命令。
ifconfig eth1 down
ifconfig eth1 up
就是这样!