zoukankan      html  css  js  c++  java
  • 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 和交换机的链路聚合是如何匹配的?

    转载图片

  • 相关阅读:
    LeetCode 227. Basic Calculator II
    LeetCode 224. Basic Calculator
    LeetCode 103. Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 169. Majority Element
    LeetCode 145. Binary Tree Postorder Traversal
    LeetCode 94. Binary Tree Inorder Traversal
    LeetCode 144. Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/yanling-coder/p/11867123.html
Copyright © 2011-2022 走看看