• bond模式详解


    bond模式详解

    一、什么是bond?

    CentOS7系统可以将多个网络接口绑定在一起,来作为单一的接口去给上层应用使用。

    二、为什么使用bond?

    bong可以将多个网卡绑定到一起,可以让两个或多个接口作为一个接口,同时提高带宽,并提供网络链路的冗余,当有其中一块网卡故障的时候,不会中断服务器的业务。

    三、bond模式配置

    1、配置linux bond

    a)、加载bonding模块

    # 对于CentOS系统默认会加载bonding模块,我们也可以使用root用户手动加载模块**
    # 临时加载模块,重启失效。
    modprobe --first-time bonding
    # 永久加载模块
    modprobe bonding 
    
    # 查看模块信息
    modinfo bonding
    

    b)、配置bond

    b-1)、创建bond接口,在 /etc/sysconfig/network-scripts/ 目录中创建名为 ifcfg-bondN 的文
    件,使用接口号码替换 N,比如 0

    ### 创建bond接口
    # vim /etc/sysconfig/network-scripts/ifcfg-bond0
    
    DEVICE=bond0          //和文件名中的ifcfg-bond0中的bond0是一致的。
    NAME=bond0            //设备名字,为了NetworkManage方便管理,和DEVICE保持一致
    TYPE=Bond             //TYPE要设置成Bond,表示该接口为bond接口
    BONDING_MASTER=yes       
    IPADDR=192.168.1.1   
    PREFIX=24
    ONBOOT=yes
    BOOTPROTO=none
    BONDING_OPTS="mode=4 miion=100"  //bond选项,引号里面的内容,需要配置,这里配置了之后,就不需要配置
    

    b-2)、修改物理接口的配置文件

    ### vim /etc/sysconfig/network-scripts/ifcfg-em1
    
    DEVICE=em1
    ONBOOT=yes
    HOTPLUG=no
    NM_CONTROLLED=no
    PEERDNS=no
    MASTER=bond0                                  // 
    SLAVE=yes                                    //
    BOOTPROTO=none
    
    同样的修改物理网卡,em2.

    b-3)、验证、查看bond

    ### 查看bond0的绑定结果
    [root@control1 network-scripts]# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: em1
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: em1
    MII Status: up
    Speed: 10000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: b8:ca:3a:6c:49:68
    Slave queue ID: 0
    
    Slave Interface: em2
    MII Status: up
    Speed: 10000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: b8:ca:3a:6c:49:6a
    Slave queue ID: 0
    

    #######到这里,我们的bond可以直接用了,如果想将bond绑定到ovs上面,可以看下面的步骤########

    2、将bond绑定到ovs上面(可选)

    a)、前置条件

    ### 安装openvswitch 
    yum install -y openvswitch
    systemctl enable openvswitch
    systemctl start openvswitch
    

    b)、配置网卡

    b-1)、修改bond网卡

    ###
    # vim /etc/sysconfig/network-scripts/ifcfg-bond0
    
    DEVICE=bond0
    ONBOOT=yes
    HOTPLUG=no
    NM_CONTROLLED=no
    PEERDNS=no
    DEVICETYPE=ovs
    TYPE=OVSPort
    OVS_BRIDGE=br-ex
    MACADDR="b8:ca:3a:6c:46:b0"
    BONDING_OPTS="mode=802.3ad miimon=100"
    MTU=9000
    

    b-2)、创建br-ex,并定义br-ex为ovs虚拟网桥。

    ###
    # vim /etc/sysconfig/network-scripts/ifcfg-br-ex
    
    DEVICE=br-ex
    ONBOOT=yes
    HOTPLUG=no
    NM_CONTROLLED=no
    DEVICETYPE=ovs
    TYPE=OVSBridge
    MTU=9000
    OVS_EXTRA="set bridge br-ex fail_mode=standalone"
    

    四、bond模式

    1、模式0

    模式0(mode=0,round-robin):此模式使用轮询策略,即顺序的在每一个被bond的网卡上发送数据包,这种模式提供负载均衡和容错能力。Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。
    在bond0模式下,如果一个连接或者会话的数据包从不同的网口发出,途中再经过不同的链路,则在客户端很有可能会出现数据包无序到达的现象,而无序到达的数据包一般需要重新发送,这样网络的吞吐量就会下降。同时,如果做bond0的两张或多张网卡接到了同一交换机上,还需对其配置聚合模式。

    2、模式1

    ​ 模式1(mode=1,active-backup):此模式使用主被策略(热备)。在所有做bond1的物理网卡中,同一时刻只有一张网卡被激活,当且仅当活动网卡失效时才会激活其他的网卡。这种模式下做bond的两张或多张网卡的MAC地址和Bond虚拟网卡的MAC地址相同,而Bond的MAC地址是Bond创建启动后活动网卡(Active Slave)的MAC地址。这种模式要求主被网卡能快速的切换,即当主网卡出现故障后能迅速地切换至备用网卡。切换过程中,上层的应用几乎不受影响,因为Bond的驱动程序会临时接管上层应用的数据包,存放至数据缓冲区,等待备用网卡启动后再发送出去。但是如果切换时间过长,则会引起缓冲区的溢出,导致丢包。

    3、模式2

     模式2(mode=2,balance-xor):xor为异或运算(二进制位相异为1,相同为0)。此模式的默认选择策略是:
    

    选择网卡的序号=(源MAC地址 XOR 目标MAC地址) % Slave网卡(从网卡)的数量。
    其他的传输策略可以通过xmit_hash_policy配置项指定。

    4、模式3

    ​ 模式3(mode=3,broadcast):使用广播策略,数据包会被广播至所有Slave网卡进行传送。

    5、模式4

    模式4(mode=4,802.3ad):使用动态链接聚合策略,启动时会创建一个聚合组,所有Slave网卡共享同样的速率和双工设定。

    必要条件:
    1.支持使用ethtool工具获取每个slave网卡的速率和双工设定;
    2.需要交换机支持IEEE 802.3ad 动态链路聚合(Dynamic link aggregation)模式

    6、模式5

    模式5(mode=5,balance-tlbtransmitload balancing):基于每个slave网卡的速率选择传输网卡。
    必要条件:支持使用ethtool工具获取每个slave网卡的速率。

    7、模式6

    模式6(mode=6,balance-alb,Adaptive load balancing):该模式包含了bond5模式,同时还支持对IPV4流量接收时的负载均衡策略(receive load balance, rlb),而且不需要任何交换机的支持。
    必要条件:

    1. ethtool支持获取每个slave的速率;
    2. 底层驱动支持设置某个网卡设备的硬件地址。

    五、如何选择bond 模式

    配置bond 模式主要是为了和交换机做协商。一般交换机支持LACP链路聚合,交换机的LACP又分为静态动态。下面是交换机的两种聚合方式介绍:

    ####################################
    
    1,静态:
    
    mode on,手动强制模式:
      不发送也不接收LACP协商报文,交换机物理端口被强制捆绑到etherchannel,数据包根据聚合口负载均衡模式在多个物理口上传输。一般默认的为基于包的负载均衡,即在多个网口之间轮询发送数据包。使用这种聚合模式时,对端也必须是mode on,强制形成etherchannel。
    
    ########################################
    2,动态:
    
    active,主动协商模式:
      交换机聚合口主动发出LACPDU报文,与对端符合802.3ad规范的动态聚合口主动协商。
      一般推荐使用主动模式。
    
    passive,被动协商模式:
    
      交换机聚合口只接收LACPDU报文,被动与对端符合802.3ad规范的动态聚合口进行协商。
    

    问题:那么服务器的bond 和交换机的链路聚合是如何匹配的?

    转载图片

  • 相关阅读:
    canvasnode的设计思路和api介绍
    希望新浪网络学院的童鞋们加油
    和新童鞋们吃饭,见到了jeremy
    MongoDB 学习资料
    [转] Scrum框架及其背后的原则
    twisted学习资料
    创建课程表
    进程
    协程
    支付宝支付流程
  • 原文地址:https://www.cnblogs.com/yanling-coder/p/11867123.html
Copyright © 2020-2023  润新知