网卡绑定-bond

发布于 2023-03-28  23 次阅读


双网卡绑定-bond

网卡绑定共有七种模式

mode=0与mode=1比较常用,mode=6负载均衡方式两块网卡都工作,不需要交换机支持,常用。

1、网卡负载均衡模式mode=0

该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

特点:
    所有链路处于负载均衡状态,以轮询方式向每条链路发送报文,基于per packet方式(按数据分流)发送。
    如在配置bond0的服务器ping baidu.com 两个网卡均会有流量发出,流量会负载到两条链路上,说明是基于per packet方式进行的轮训发送。
    该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

2、网卡容错模式mode=1

当主端口down掉时,从端口会接手主端口的状态

特点:
    一个端口处于主状态,一个端口处于从状态,所有的流量都会在主链路上处理,从端口不会有任何流量。当主端口down掉时,从端口接手主状态

3、balance-xor需要交换机支持mode=2

需要交换机支持mode=2,通过源和目标mac做hash因子来做xor算法来选择链路

特点:
    此模式的特点是一个报文会负载两份王bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源,在所有的slave接口上传送所有的报文。本模式提供容错能力。

4、broadcast广播策略mode=3

广播策略mode=3
此模式需要高可靠性的网络,不允许出现任何问题。本模式提供负载均衡和容错的能力

特点:
    此模式的特点是一个报文会负载两份王bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源,在所有的slave接口上传送所有的报文。本模式提供容错能力。

5、动态链路聚合mode=4

6、自适应传输负载均衡模式

balance-tlb自适应传输负载均衡模式mode=5

特点:
    自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。
    先决条件:
    每个slave的基本驱动支持Ehtool获取速率状态。

7、网卡虚拟化模式mode=6

回复报文数第一个从端口1发第二个从端口2发,以此类推

特点:
    此模式包含了自适应传输负载均衡模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。
    接收负载均衡是通过ARP协商(地址解析协议)实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
    所有端口都会收到对端的ARP请求报文,回复ARP回时,bond驱动模块会截获所发的ARP回复报文,跟进算法算到相应端口,这时会把ARP回复报文的源Mac,send源Mac都改成相应端口Mac。从抓包情况分析回复报文是第一个从端口1,第二个端口2发,以此类推。

bond-mode0配置

1、修改网卡配置

# 加载bonding模块,并确认已经加载
$ modprobe --first-time bonding
$ lsmod | grep bonding
bonding               152656  0

# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/

# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens33 ifcfg-ens33.bak
$ mv -f ifcfg-ens36 ifcfg-ens36.bak

# 重新配置ens33与ens36网卡
$ vim ifcfg-ens33
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens33
MASTER=bond0
SLAVE=yes

$ vim ifcfg-ens36
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens36
MASTER=bond0
SLAVE=yes

2、配置bond网卡绑定模式

$ vim ifcfg-bond0
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.96.100
NETMASK=255.255.255.0
GATEWAY=192.168.96.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=0"

3、配置bond文件

$ vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=0

4、配置开机启动

$ vim /etc/rc.local
modprobe bonding miimon=100 mode=0

5、查看结果

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:c2:f3:75 brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:c2:f3:7f brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:c2:f3:75 brd ff:ff:ff:ff:ff:ff
    inet 192.168.96.202/24 brd 192.168.96.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec2:f375/64 scope link 
       valid_lft forever preferred_lft forever