CentOS7设置网卡Bond
1. 查看网卡的名称和状态
# nmcli device status
DEVICE TYPE STATE CONNECTION
ens11f0 ethernet 已连接 ens11f0
ens11f1 ethernet 已断开 --
docker0 bridge 未托管 --
lo loopback 未托管 --
2. 关闭接口
nmcli connection down ens11f0
nmcli connection down ens11f1
nmcli connection down bond0
3. 清除配置(可选)
rm -f /etc/sysconfig/network-scripts/*ens11f0
rm -f /etc/sysconfig/network-scripts/*ens11f1
rm -f /etc/sysconfig/network-scripts/*bond0
4. 设置bond
nmcli connection add type bond con-name bond0 ifname bond0 mode 802.3ad
nmcli connection modify bond0 bond.options mode=1 # 修改模式(可选)
nmcli connection add type bond-slave con-name ens11f0 ifname ens11f0 master bond0 # 将物理网卡绑定到bond0
nmcli connection add type bond-slave con-name ens11f1 ifname ens11f1 master bond0
第一种模式:mod=0,即:(balance-rr) Round-robin policy(平衡抡循环策略)cisco交换机?
第二种模式:mod=1,即:(active-backup) Active-backup policy(主-备份策略)
第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)华为交换机配置Eth-Trunk dis interface Eth-Trunk 2 According to SA-XOR-DA
第四种模式:mod=3,即:broadcast(广播策略)
第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)
第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
在balance-xor和802.3ad模式下选择不同的hash模式,以用于slave选举。可能的取值有:
- layer2
使用硬件MAC地址的XOR来生成hash。公式为: (源MAC地址 XOR 目的MAC地址)% slave数目 该算法会将某个网络对(network peer)上所有的流量全部分配到同一个slave上。
- layer3+4
该策略在可能的时候使用上层协议的信息来生成hash。这将允许特定网络对(network peer)的流量分摊到多个slave上,尽管同一个连接(connection)不会分摊到多个slave上。针对未分片的TCP和UDP包的计算公式为:((源端口 XOR 目的端口) XOR ((源IP XOR 目的IP) AND 0xFFFF) % slave数目对于已分片TCP或UDP包,以及其他的IP包,源端口和目的端口的信息被忽略了;对于非IP流量,采用和layer2一样的hash策略。 该策略期望模仿某些交换机的行为,比如带PFC2的Cisco交换机,以及某些Foundry和IBM的产品。 该算法不完全适应802.3ad,一个单一的TCP或UDP会话同时包含有分片和未分片的包将会导致包在两个接口上传递,这将会导致投递乱序。大多数流量不会满足这种条件,正如TCP很少分片,而大多数UDP流量不会在长期的会话中存在。其他的802.3ad实现有可能不能容忍这样的不适应性。缺省设置是layer2。该选项在bonding 2.6.3加入,在早期版本中,该参数不存在,只是layer2策略。
1.layer2:使用二层帧头作为计算分发出口的参数,这导致通过同一个网关的数据流将完全从一个端口发送,为了更加细化分发策略,必须使用一些三层信息,然而却增加了计算开销。
2.layer2+3:在1的基础上增加了三层的ip报头信息,计算量增加了,然而负载却更加均衡了,一个个主机到主机的数据流形成并且同一个流被分发到同一个端口,根据这个思想,如果要使负载更加均衡,我们在继续增加代价的前提下可以拿到4层的信息。
3.layer3+4:该策略在可能的时候使用上层协议的信息来生成hash。这将允许特定网络对(network peer)的流量分摊到多个slave上,尽管同一个连接(connection)不会分摊到多个slave上。
5. 设置bond IP
nmcli connection modify bond0 ipv4.addresses "192.168.0.100/24" ipv4.gateway "192.168.0.1" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify bond0 ipv4.method manual
6. 启动接口
# nmcli connection up ens11f0
# nmcli connection up ens11f1
nmcli connection up bond-slave-ens11f0
nmcli connection up bond-slave-ens11f1
nmcli connection up bond0
nmcli connection show bond0
示例配置文件1
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# modprobe --first-time bonding
# lsmod | grep bonding
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.3.242
PREFIX=24
GATEWAY=192.168.3.1
DNS1=114.114.114.114
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"
# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0f0
DEVICE=enp1s0f0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
# systemctl restart network
# cat /proc/net/bonding/bond0
示例配置文件2
# cat ifcfg-bond0
TYPE=Bond
DEVICE=bond0
BOOTPROTO=static
NAME=bond0
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="xmit_hash_policy=layer3+4 mode=4 miimo=100"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=8.8.8.8
DNS2=8.8.4.4
USERCTL=no # 用户权限控制。yes:非root用户允许控制该网络接口;no:非root用户不允许控制该网络接口。
# cat ifcfg-ens95f2
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens95f2
DEVICE=ens95f2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# cat ifcfg-ens95f3
TYPE=Ethernet
BOOTPROTO=static
NAME=ens95f3
DEVICE=ens95f3
ONBOOT=yes
MASTER=bond0
SLAVE=yes