【linux命令】网卡bond

网卡bond

所谓bond,就是把多个物理网卡绑定成一个逻辑上的网卡,使用同一个IP工作,在增加带宽的同时也可以提高冗余性,一般使用较多的就是来提高冗余,分别和不同交换机相连,提高可靠性,但有时服务器带宽不够了也可以用作增加带宽。

网卡配置bond(绑定)bond模式:

1、Mode=0(balance-rr) 表示负载分担round-robin,平衡轮询策略轮流在每一个slave网卡上发送数据包,提供负载均衡和容错能力。bond的网卡MAC为当前活动的网卡的MAC地址,需要交换机设置聚合模式,将多个网卡绑定为一条链路。

2、Mode=1(active-backup) 表示主备模式具有容错功能,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
    
3、Mode=2(balance-xor) 表示XOR Hash负载分担(异或平衡策略),具有负载平衡和容错功能。每个slave接口传输每个数据包和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)。

4、Mode=3(broadcast)  表示所有包从所有interface发出,广播策略,具有容错能力,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。  

5、Mode=4(802.3ad) 表示支持802.3ad协议(IEEE802.3ad 动态链接聚合) 和交换机的聚合LACP方式配合(需要xmit_hash_policy)。

6、Mode=5(balance-tlb) 适配器传输负载均衡,并行发送,无法并行接收,解决了数据发送的瓶颈。 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。  

7、Mode=6(balance-alb) 在5的tlb基础上增加了rlb。适配器负载均衡模式并行发送,并行接收数据包

总结:5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式,但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

 

网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6。 常用的有三种:

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

 

小结:

  mode 1、5、6不需要交换机设置

  mode 0、2、3、4需要交换机设置

 

配置bond1:

网卡

bond1 IP

bond 模式

   en2、ens3

   100.100.100.100

  mode 1

eth2,eth3为bond前的网卡名称,bond0为bond后的网卡名称,我们需要对这三个配置文件做更改。

 

bond0模式:

vim  /etc/sysconfig/network-scripts/ifcfg-bond0         # 建立虚拟网卡bond0
DEVICE=bond0
IPADDR=10.10.10.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
GATEWAY=10.10.10.254

vim  /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes 

vim  /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes 

# 设置完成后,重启网络服务来使用bond0生效

service network restart  # bond模块会自动加载

cat /proc/net/bonding/bond0  # 查看目前bonding的状态
modprobe -r bonding;service network restart   # 让bond模式生效

 

bond1模式:

具体操作步骤就下面这步不同,其它一致。
vim /etc/modprobe.d/bond.conf   
alias bond0 bonding
options bond0 miimon=100 mode=1    # 模式1

vim /etc/rc.d/rc.local   # eth0 eth1的工作顺序(仅在主备模式下需要做这个设置,其他的模式不需要做这个设置)
ifenslave bond0 eth0 eth1

注:在高可用的环境下,网卡配置bonding后,vip_nic要为bond0

eth2

$vim /etc/sysconfig/network-scripts/ifcfg-eth2
 DEVICE=eth2
 HWADDR=44:A8:42:25:7C:FE
 BOOTPROTO=none
 ONBOOT=yes
 SLAVE=yes
 MASTER=bond1
 TYPE=Ethernet

eth3

$vim /etc/sysconfig/network-scripts/ifcfg-eth3
 DEVICE=eth3
 HWADDR=44:A8:42:25:7D:01
 BOOTPROTO=none
 ONBOOT=yes
 SLAVE=yes
 MASTER=bond1
 TYPE=Ethernet

bond0

$vim /etc/sysconfig/network-scripts/ifcfg-bond0
 DEVICE=bond0
 BOOTPROTO=static
 ONBOOT=yes
 IPADDR=100.100.100.100
 NETMASK=255.255.255.0
 GATEWAY=100.100.100.1
 TYPE=Ethernet

 

[root@web01 ~]# cat >> /etc/modules-load.d/bonding.conf << EOF
> alias bond1 bonding
> options bonding mode=1 miimon=200           # 加载bonding模块,对外虚拟网络接口设备为 bond1
> EOF

重启网卡使配置生效:

[root@web01 ~]# systemctl restart network 

参考资料

1. 实战网卡bond
2. linux 实现双网卡绑定单个IP——bond篇

3. Linux双网卡绑定实践

4. 网卡bonding模式 - bond0、1、4配置

posted @ 2023-05-12 14:41  苏格拉底的落泪  阅读(343)  评论(0编辑  收藏  举报