centos和debian、pve系统如何做网卡bond

Bonding的模式一共有7种:

    mode=0 (balance-rr) (Round-robin policy :平衡抡循环策略)
        # 特点:数据包按网卡顺序依次传输(即:第1个包走eth0,下一个走eth1….循环往复),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降
        # SW配置:需要启用静态 EtherChannel,而不是链路聚合控制协议(LACP)协商。

    mode=1 (active-backup) (Active-backup policy :主-备份策略)
        # 特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见的,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
        # SW配置:交换机上不需要任何配置。

    mode=2 (balance-xor) (XOR policy :平衡策略)
        # 特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力
        # SW配置:需要启用静态 EtherChannel,而不是 LACP 协商。

    mode=3 (broadcast) (broadcast :广播策略)
        # 特点:在每个slave接口上传输每个数据包,此模式提供了容错能力 
        # SW配置:需要启用静态 EtherChannel,而不是 LACP 协商。

    mode=4 (802.3ad) (IEEE 802.3ad 动态链接聚合),这是常见服务器推荐使用的模式
        # 特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。
        必要条件:
            #条件1:组成bond的网卡速率和双工设定要一致,可以用ethtool测试网卡属性(比如Speed: 2000Mb/s;Duplex: Full)
            #条件2:交换机要支持802.3ad动态聚合,(华为叫LACP)
            #条件3:交换机要启用端口聚合,并将聚合端口,如eth-trunk 设置为lacp模式
        hash策略:
            #L2     :MAC
            #L2+L3  :MAC+IP
            #L3+L4  :IP+Port        经测试L3+L4在ip端口应用中流量很容易进行平衡负载(类似rr效果)
        # SW配置:需要启用 LACP 协商的 EtherChannel。

    mode=5 (balance-tlb) (Adaptive transmit load balancing :适配器传输负载均衡)
        # 特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
        # SW配置:交换机上不需要任何配置。
        #必要条件:ethtool支持获取每个slave的速率 

    mode=6 (balance-alb) (Adaptive load balancing :适配器适应性负载均衡)
        # 特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
        # SW配置:交换机上不需要任何配置。

案例一:debian11和pve7做lacp聚合(即bond4或者叫802.3ad)(策略:L3+L4)

auto em1
  iface em1 inet manual
  bond-master bond0
auto em2
  iface em2 inet manual
  bond-master bond0
auto bond0
  iface bond0 inet static
  address 192.168.1.100
  netmask 255.255.255.0
  gateway 192.168.1.1
  bond-mode 4
  bond-miimon 100
  bond-lacp-rate 1
  bond-slaves em1 em2
  bond-xmit_bash_policy 1
  dns-nameservers 211.141.90.68 114.114.114.114

#这是经过实践测试完全可以负载的模式,华为交换机开启mode lacp-static,其他的缺省就行(华为CE88系列交换机默认的策略是 src-dst-ip )
apt install ifenslave

iface enp161s0f0np0 inet manual
iface enp161s0f1np1 inet manual
auto bond1
iface bond1 inet manual
        bond-slaves enp161s0f0np0 enp161s0f1np1
        bond-miimon 100
        bond-mode 4
        bond-lacp-rate 1
        address 192.168.112.5/20
        bond-xmit-hash-policy layer3+4      #注意,(如果您只有两台服务器之间互相测试,那么用layer2,肯定是看不出负载效果的,您可以用两台对另一台iperf拉测)。(layer3+4那么两台也能看到负载效果)

案例二:centos6 双网卡eth2,eth3做bond0,模式为mode=0,然后接在交换机的5号和6号口上

第一:创建bond0设备,并配置slave网卡,设置交换机

    #先在centos系统下检查内核是否支持bond绑定(我的系统版本是centos6.7)
    modinfo bonding     #有返回就可以

    #创建bond0设备及配置响应的slave网卡
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0 
DEVICE=bond0   
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.93
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
#USERCTL=no
GATEWAY=192.168.1.1
DNS1=211.141.90.68
BONDING_OPTS="mode=0 miimon=100"
#BONDING_OPTS="mode=0 miimon=100 lacp_rate=fast"   #注意不要有lacp,这是在802.3ad中特有使用的

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

    #华为S5328交换机配置如下(根本没有做任何特殊配置,连Eth-Trunk都没有创建)
interface GigabitEthernet0/0/5
 port link-type access
 port default vlan 100
#
interface GigabitEthernet0/0/6
 port link-type access
 port default vlan 100

    #重启网络服务
    /etc/init.d/network restart

第二:检查刚才所做的配置是否正确,是否生效(用图片)



第三:测试验证bond0是否如预期效果 结果:成功,流量比例相同,真正的平衡

    #检查网络是否通常
    ping baidu.com      #ok,网络正常

    #测试下载,并同时登录华为交换机,查看5号口和6号的流量比例
    wget http://mirrors.163.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

[Quidway]display interface  brief   #省略了无关接口,,下面是隔几秒,得到的流量比例,发现两个口是均衡的
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors
GigabitEthernet0/0/5        up    up       0.01%  0.12%          0          0
GigabitEthernet0/0/6        up    up       0.01%  0.12%          0          0

InUti/OutUti: input utility/output utility
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors
GigabitEthernet0/0/5        up    up       0.01%  0.43%          0          0
GigabitEthernet0/0/6        up    up       0.01%  0.44%          0          0

InUti/OutUti: input utility/output utility
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors
GigabitEthernet0/0/5        up    up       0.01%  0.62%          0          0
GigabitEthernet0/0/6        up    up       0.01%  0.62%          0          0

案例三:centos6 双网卡eth2,eth3做bond4,模式为mode=4,然后接在交换机的5号和6号口上

第一:创建bond4设备,并配置slave网卡,设置交换机

    #先在centos系统下检查内核是否支持bond绑定(我的系统版本是centos6.7)
    modinfo bonding     #有返回就可以

    #创建bond4设备及配置响应的slave网卡
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond4 
DEVICE=bond4
NAME=bond4
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.93
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
#USERCTL=no
GATEWAY=192.168.1.1
DNS1=211.141.90.68
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer2+3"
    #注意:lacp_rate=fast,表示每个秒向邻居发送lacpdu信息,
    #注意:xmit_hash_policy=layer2+3,这是选择slave接口的传输哈希策略,这个算法将所有流量放到同一从属接口的特定对等网络中。非 IP 流量的公式与 layer2 传输哈希策略相同。
    #这个策略旨在提供比单独使用 layer2 更平衡的流量分配,特别是在需要 layer3 网关设备的环境,以便连接到大多数目标

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
NAME=bond04-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond4
SLAVE=yes

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
NAME=bond4-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond4
SLAVE=yes

    #华为S5328交换机配置如下(需要创建Eth-Trunk,并将Eth-Trunk设置为lacp模式)
interface Eth-Trunk2
 port link-type access
 port default vlan 100
 mode lacp
#
interface GigabitEthernet0/0/5
 eth-trunk 2
#
interface GigabitEthernet0/0/6
 eth-trunk 2

    #重启网络服务
    /etc/init.d/network restart

第二:检查刚才所做的配置是否正确,是否生效(用图片),不用测试端口,因为这个流量不是绝对均衡,需要在长时间大环境下测试



案例四:centos6 双网卡eth2,eth3做bond6,模式为mode=6,然后接在交换机的5号和6号口上

第一:创建bond6设备,并配置slave网卡,设置交换机

    #先在centos系统下检查内核是否支持bond绑定(我的系统版本是centos6.7)
    modinfo bonding     #有返回就可以

    #创建bond6设备及配置响应的slave网卡
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond6 
DEVICE=bond6
NAME=bond6
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.93
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
#USERCTL=no
GATEWAY=192.168.1.1
DNS1=211.141.90.68
BONDING_OPTS="mode=6 miimon=100"

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
NAME=bond06-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond6
SLAVE=yes

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
NAME=bond6-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond6
SLAVE=yes

    #华为S5328交换机配置如下(根本没有做任何特殊配置,连Eth-Trunk都没有创建)
interface GigabitEthernet0/0/5
 port link-type access
 port default vlan 100
#
interface GigabitEthernet0/0/6
 port link-type access
 port default vlan 100

    #重启网络服务
    /etc/init.d/network restart

第二:检查刚才所做的配置是否正确,是否生效(用图片),不用测试端口,因为这个流量不是绝对均衡,需要在长时间大环境下测试



案例五:centos7 做bond1,经测试 与上面案例

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
NAME=bond11-slave
MASTER=bond11
SLAVE=yes
TYPE=Ethernet

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=bond11-slave
MASTER=bond11
SLAVE=yes
TYPE=Ethernet

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond11
DEVICE=bond11
BOOTPROTO=static
ONBOOT=yes
TYPE=bond
IPADDR="192.168.1.44"
PREFIX="24"
BONDING_OPTS=mode=active-backup
#BONDING_MASTER=yes

opensuse 配置bond

ifcfg-bond0
          STARTMODE='auto' # or 'onboot'
          BOOTPROTO='static'
          IPADDR='192.168.0.1/24'
          BONDING_MASTER='yes'
          BONDING_SLAVE_0='eth0'
          BONDING_SLAVE_1='eth1'
          BONDING_MODULE_OPTS='mode=active-backup miimon=100'

---------------------------------

ifcfg-eth0
          STARTMODE='hotplug'
          BOOTPROTO='none'

ifcfg-eth1
          STARTMODE='hotplug'
          BOOTPROTO='none'
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/488.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2024/9/21作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录