zoukankan      html  css  js  c++  java
  • 关于提高服务器的带宽策略bonding

    一:bonding的概念

    所谓bonding就是将多块网卡绑定同一IP地址对外提供服务,可以实现网卡的带宽扩容、高可用或者负载均衡。

    二:bonding的优势

    1 网络负载均衡
    2 提高带宽网络传输效率
    3 网络冗余与高可用

    三:bonding的策略(7种策略)

    1  balance-rr (mode=0)轮询(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力。
    2 active-backup(mode=1)主备模式 ,在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换
      机发生混乱此时绑定的MAC地址只有一个外部端口上可见。在bongding的2.6.2及其以后的版本中,主备模式下发生一次故障迁移时,bonding将在新
      激活的slave上会送一个或者多个gratuitous ARP.bonding的主salve接口上以及配置在接口上的所有VLAN接口都会发送gratuitous ARP,只要
      这些接口上配置了至少一个IP地址。VLAN接口上发送的的gratuitous ARP将会附上适当的VLAN id。本模式提供容错能力,primary option,
      documented below会影响本模式的行为。 3 balance-xor(mode=2)XOR策略:基于所选择的传送hash策略。本模式提供负载均衡和容错的能力。 4 broadcast(mode=3)广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。 5 802.3ad(mode=4)IEEE 802.3ad 动态链路聚合。创建共享相同的速率和双工模式的聚合组。能根据802.3ad规范利用所有的slave来建立聚合链路。
      Salve的出站选择取决于传输的hash策略,默认策略是简单的XOR策略,而hash策略则可以通xmit_hash_policy选项加以改变。需要注意的是:不是所有
      的传输策略都与802.3ad兼容,尤其是802.3ad标准的43.2.4章节中关于 packet mis-ordering要求的地方。不同个体的实现往往出现很大的不兼容。 先决条件: 1. 每个slave的基本驱动支持Ehtool获取速率和双工状态。 2.交换机支持IEEE 802.3ad动态链路聚合。大多数的交换机都需要使用某种配置方式来启用802.3ad模式。 6 balance-tlb(mode=5)   自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。
      如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。 先决条件: 每个slave的基本驱动支持Ehtool获取速率状态。 7 balance-alb(mode=6) 自适应负载均衡:包括balance-tlb(模式5)以及用于IPV4流量的接收负载均衡,并且不需要特殊的交换机支持。接收负载均衡通过ARP协商实现。bonding的
    驱动拦截本机发出的ARP Replies(ARP回应报文),并且用bond的某一个slave的硬件地址改写ARP报文的源地址,使得本服务器对不同的设备使用不同的硬件
    地址。本服务器建立的连接的接收流量也是负载均衡的。当本机发送ARP Request时,bonding驱动通过ARP报文复制并保存节点的IP信息。当从其他节点接收到
    ARP Reply,bonding驱动获取节点的硬件地址并且会回应一个包含绑定好的slave的硬件地址的ARP Reply给发送的节点。用ARP协商的负载均衡的有一个问题
    是每次用bond的硬件地址广播ARP报文,那么其他节点发送的数据全部集中在一个slave上,处理ARP更新给其他所有节点的时候,每个节点会重新学习硬件地址,
    导致流量重新分配。当新加入一个slave或者一个非激活的slave重新激活的时候也会导致接收流量重新分配。接收流量负载是串行(轮转)的分配在bond的一组速
    率最高的slave上。 当一个链路重连或者一个新的slave加入的时候,bond会重新初始化ARP Replies给所有的客户端。updelay参数的值必须等于或者大于交换机的forwarding delay,
    以免ARP Replies被交换机阻塞。 先决条件: 1.每个slave的基本驱动支持Ehtool获取速率状态。 2. 基本驱动支持当设备打开时重新设置硬件地址。也要求每一个slave具有唯一的硬件地址。如果curr_active_slave失败,它的硬件地址被新选上的
      curr_active_slave硬件地址来替换

    四 bonding的相关配置(生产环境mode=6的方式)

    1 首先进入网卡文件配置目录  cd /etc/sysconfig/network-scripts/  

    2 备份网卡配置文件cp ifcfg-eth0  ifcfg副本-eth0

    3 拷贝cp ifcfg-eth0  ifcfg-bond0   

    4 配置 bonding

    #cat <<EOF >>ifcfg-bond0
    DEVICE=bond0
    BONDING_OPTS='miimon=100 mode=6'
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.61
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    USERCTL=no
    EOF

    配置网卡eth0、eth1

    #cat << EOF >>ifcfg-eth0 
    DEVICE=eth0
    HWADDR=D0:50:99:C1:0E:83
    TYPE=Ethernet
    UUID=5eefe89c-0cbf-426c-987e-1b6ee1c54024
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    EOF
    
    #cat << EOF >>ifcfg-eth01
    DEVICE=eth1
    HWADDR=D0:50:99:C1:0E:81
    TYPE=Ethernet
    UUID=a71f51f5-c05b-4bcd-a618-bb09813be60e
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    EOF 

    五: 加载bonding模块配置文件声明

    #加载配置
    # cat /etc/modprobe.d/bond.conf alias bond0 bonding
    # 修改bond模式的两种方式
    1.cat /etc/modprobe.d/dist.conf  options bond0 miimon=100 mode=6
    2 还有一种修改方式在ifcfg-bond0网卡配置文件追加
     BONDING_OPTS="mode=1 miimon=100"

    1 #modprobe bonding      加载bonding配置

      service network restart 重启网卡

    2 查看bond0 是否生效

    #cat /proc/net/bonding/bond0
    Bonding Mode: adaptive load balancing
    Primary Slave: None
    Currently Active Slave: eth1
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    
    Slave Interface: eth0
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 1
    Permanent HW addr: d0:50:99:c1:0e:83
    Slave queue ID: 0
    
    
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: d0:50:99:c1:0e:81
    Slave queue ID: 0 

    3 开机自启脚本配置声明

    cat /etc/rc.local 
    #!/bin/bash
    touch /var/lock/subsys/local
    ifenslave  bond1 eth1 eth2  

    注意:在重启network服务时需关闭NetworkManager

    #systemctl stop NetworkManager.service     # 停止NetworkManager服务

    #systemctl disable NetworkManager.service  # 禁止开机启动NetworkManager服务

    #systemctl isdisable NetworkManager.service  #查看NetworkManager服务是否关闭 

    原因:
    在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置
    会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路
    由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添
    加上去。

    五 测试:

    1 在测试高可用时:

    拔掉一根网线看是否还能ping通bond0

    2 在测试流量带宽时 

    如果两张网卡为千兆带宽时,我们应同时准备两台同等带宽的服务器同时测试

    准备: 

    软件:iperf3 参考博客:https://www.cnblogs.com/yingsong/p/5682080.html

    命令 服务端:  iperf –s -u –p 12345 –i 1

       客户端: iperf -c server-ip -p server-port -i 1 -t 10 -b(两台客户端服务器同时执行)

    结果:如果服务端的带宽大于1000M且拔掉一根网线还能成功,证明bonding配置成功

    Bonding Mode: adaptive load balancingPrimary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0

    Slave Interface: eth0MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: d0:50:99:c1:0e:83Slave queue ID: 0

    Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: d0:50:99:c1:0e:81Slave queue ID: 0--------------------- 作者:su4416160 来源:CSDN 原文:https://blog.csdn.net/su4416160/article/details/53103599 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    docker容器日志收集方案(方案四,目前使用的方案)
    docker容器日志收集方案(方案三 filebeat+journald本地日志收集)
    docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)
    docker容器日志收集方案(方案一 filebeat+本地日志收集)
    企业业务数据处理用“work”还是“MQ”
    spring cloud 实践之hystrix注意事项
    微服务架构理论-扩展立方体篇
    C# asp.net PhoneGap html5
    C# Where
    网站分布式开发简介
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/11027256.html
Copyright © 2011-2022 走看看