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
posted @ 2020-10-30 09:34  Varden  阅读(1278)  评论(0编辑  收藏  举报