Bond
技术,也被称为网卡绑定或网卡捆绑,是将两个或更多的物理网卡绑定成一个虚拟的网卡(Bond
)。通过这一技术,多块网卡对外呈现为一个单独的以太网接口设备,并具有相同的IP
地址。Bond
技术主要用于解决网卡单点故障或网卡负载较高的场景,旨在提高服务的可靠性和网络带宽。
在LINUX
中,Kernels 2.4.12
及以后的版本均供bonding
模块,可以这样查看:
[root@shad0w-top ~]# cat /boot/config-3.10.0-1127.el7.x86_64 | grep -i bonding
CONFIG_BONDING=m
[root@localhost ~]#
通过Bond
技术,多块物理网卡被虚拟成一张网卡。对于多物理网卡的Bond
网卡,其中一块物理网卡会被设置为Master
(主设备),其他网卡则为Slave
(从设备)。Bond
网卡的MAC
地址通常取自Master
物理网卡,并复制到其他物理网卡上。
bond
的模式常用的有两种:
#1) mode=0
表示负载分担
round-robin
,并且是轮询的方式比如第一个包走eth0
,第二个包走eth1
,直到数据包发送完毕。优点:流量提高一倍
缺点:需要接入交换机做端口聚合,否则可能无法使用
#2) mode=1
表示主备模式,即
active-backup
,在此模式下,只有主网卡工作,备份网卡处于待机状态。当主网卡失效时,备份网卡将接管数据传输,确保服务的连续性。优点:冗余性高
缺点:链路利用率低,两块网卡只有1块在工作
bond
其他模式:
#1) mode=2
Balance-xor
(平衡策略),它基于HASH
算法的负载均衡模式,网卡的分流按照xmit_hash_policy
的TCP
协议层设置来进行HASH
计算分流,使得各种不同处理来源的访问都尽量在同一个网卡上进行处理。
Balance-xor
模式通常与交换机的聚合强制不协商方式配合。如果网卡连接到交换机,交换机对应的端口可能需要采取聚合方式。
#2) mode=3
broadcast
,即广播模式式。所有数据包从所有网络接口发出,该模式只有冗余能力,过于浪费资源。
#3) mode=4
IEEE 802.3ad Dynamic link aggregation
(IEEE 802.3ad
动态链接聚合)特点:创建一个聚合组,它们共享同样的速率和双工设定。根据
802.3ad
规范将多个slave
工作在同一个激活的聚合体下。外出流量的
slave
选举是基于传输hash
策略,该策略可以通过xmit_hash_policy
选项从缺省的XOR
策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad
适应的,尤其考虑到在802.3ad
标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。必要条件:
条件1:
ethtool
支持获取每个slave
的速率和双工设定条件2:
switch
(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数
switch
(交换机)需要经过特定配置才能支持802.3ad
模式
#4) mode=5
Adaptive transmit load balancing
(适配器传输负载均衡)特点:不需要任何特别的
switch
(交换机)支持的通道bonding
。在每个slave
上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave
出故障了,另一个slave
接管失败的slave
的MAC
地址。该模式的必要条件:
ethtool
支持获取每个slave
的速率
#5) mode=6
即:(
balance-alb) Adaptive load balancing
(适配器适应性负载均衡)特点:该模式包含了
balance-tlb
模式,同时加上针对IPV4
流量的接收负载均衡(receive load balance, rlb
),而且不需要任何switch
(交换机)的支持。接收负载均衡是通过ARP
协商实现的。bonding
驱动截获本机发送的ARP
应答,并把源硬件地址改写为bond
中某个slave
的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
注:以上模式使用小结:
mode5
和mode6
不需要交换机端的设置,网卡能自动聚合。
mode4
需要支持802.3ad
。
mode0
,mode2
和mode3
理论上需要静态聚合方式。
[root@shad0w-top ~]# systemctl stop NetworkManager
[root@shad0w-top ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
[root@shad0w-top ~]#
[root@shad0w-top ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
link/ether 20:04:0f:f8:38:08 brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
link/ether 20:04:0f:f8:38:08 brd ff:ff:ff:ff:ff:ff
4: em3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
link/ether 20:04:0f:f8:38:0a brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
link/ether 20:04:0f:f8:38:0a brd ff:ff:ff:ff:ff:ff
以em1
和em2
为例,插上网线,网卡端口处于up
状态。
[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond1
TYPE=Bond
BOOTPROTO=static
DEVICE=bond1
NAME=em1
ONBOOT=yes
IPADDR=192.168.250.11
NETMASK=255.255.255.0
GATEWAY=192.168.250.1
BONDING_OPTS="mode=4 miimon=100"
# em1:
[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
NAME=em1
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond1
# em2:
[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2
DEVICE=em2
NAME=em2
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond1
[root@shad0w-top ~]# systemctl restart network
[root@shad0w-top ~]#
服务热线
1391-024-6332
Copyright 2015-2018 www.intsavi.com.cn All Rights Reserved
电话:010-62980070 010-62961051 手机:13910246332
版权所有北京赛维博信科技发展有限公司 备案号:京ICP备14043711号-1 京ICP备14043711号-3