精华内容
下载资源
问答
  • centos双网卡聚合

    2021-01-04 17:13:55
    2. 什么是网卡聚合 网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负载均衡或者冗余,增加带宽的作用。当一个网卡坏掉时,不会影响业务。这个聚合起来的设备看起来一个单独的以太网接口...

    遇到在centos下使用双网口聚合来提升服务器的数据接入能力的问题。就这个问题做一个记录,方便以后使用时查阅。

    1. 环境及条件

    系统:CentOS Linux release 7.6.1810 (Core)
    硬件:包含有多个物理网卡(实验时使用虚拟机模拟多网卡)

    2. 什么是网卡聚合

    网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负载均衡或者冗余,增加带宽的作用。当一个网卡坏掉时,不会影响业务。这个聚合起来的设备看起来是一个单独的以太网接口设备,也就是这几块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。这种技术在Cisco等网络公司中,被称为Trunking和Etherchannel 技术,在Linux的2.4.x的内核中把这种技术称为bonding。

    2.1 网卡聚合的模式

    网卡聚合的有7中模式,balance-rr,active-backup,balance-xor,broadcast,802.3ad,balance-tlb,balance-alb。模式的代号从0开始到6结束。其工作模式可以分为两类:多主型工作模式和主备型工作模式。分别解释一下模式:

    1. balcancec-rr
      This mode is based on Round-robin policy and it is the default mode. This mode offers fault tolerance and load balancing features. It transmits the packets in Round robin fashion that is from the first available slave through the last.
      该模式基于轮询策略,为默认模式。这种模式提供了容错和负载平衡特性。它以轮询的方式传输数据包,从第一个可用的slave到最后一个可用的slave。
    2. active-backup
      This mode is based on Active-backup policy. Only one slave is active in this band, and another one will act only when the other fails. The MAC address of this bond is available only on the network adapter part to avoid confusing the switch. This mode also provides fault tolerance.
      该模式基于Active-backup策略。在这个频带中只有一个slave是活跃的,另一个只有在另一个失败时才会起作用。为避免交换机混淆,此bond的MAC地址仅在网卡部分可用。该模式还提供了容错功能。
    3. balance-xor
      This mode sets an XOR (exclusive or) mode that is the source MAC address is XOR’d with destination MAC address for providing load balancing and fault tolerance. Each destination MAC address the same slave is selected.
      该模式设置源MAC地址与目的MAC地址异或(exclusive or)模式,以提供负载均衡和容错功能。每个目的MAC地址选择相同的slave。
    4. broadcast
      This method is based on broadcast policy that is it transmitted everything on all slave interfaces. It provides fault tolerance. This can be used only for specific purposes.
      该方法基于广播策略,即在所有从接口上传输所有内容。它提供了容错功能。这只能用于特定的目的。
    5. 802.3ad
      This mode is known as a Dynamic Link Aggregation mode that has it created aggregation groups having same speed. It requires a switch that supports IEEE 802.3ad dynamic link. The slave selection for outgoing traffic is done based on a transmit hashing method. This may be changed from the XOR method via the xmit_hash_policy option.
      这种模式称为动态链路聚合模式,即创建速率相同的聚合组。需要一台支持ieee802.3 ad动态链路的交换机。传出流量的从选是基于一种传输哈希方法来完成的。这可以通过xmit_hash_policy选项从XOR方法更改。
    6. balance-tlb
      This mode is called Adaptive transmit load balancing. The outgoing traffic is distributed based on the current load on each slave and the incoming traffic is received by the current slave. If the incoming traffic fails, the failed receiving slave is replaced by the MAC address of another slave. This mode does not require any special switch support.
      这种模式称为自适应传输负载均衡。流出的流量根据每个slave的当前负载进行分配,流入的流量由当前slave接收。如果进入的流量失败,则用另一个slave的MAC地址替换失败的slave。该模式不需要任何特殊的交换机支持。
    7. balance-alb
      This mode is called adaptive load balancing. This mode does not require any special switch support.
      这种模式称为自适应负载均衡。该模式不需要任何特殊的交换机支持。

    2.2 模式选择

    根据业务情况,只能选择mode=6的balance-alb模式,这种模式不依赖于交换机,同时能够将2个1000Mbps的网卡聚合到总流量为2000Mbps

    3.配置mode=6的双网卡聚合

    我们期望在配置后,主机总的流量能够达到2000Mbps,下面为详细的操作过程。

    3.1 配置虚拟网卡bond0

    进入/etc/sysconfig/network-scripts目录,在该目录下新建一个名为ifcfg-bond0的文件,里面内容为:

    DEVICE=bond0
    ONBOOT=yes
    BONDING_OPTS="mode=6 miimon=100"
    BOOTPROTO=static
    TYPE=Ethernet
    USERCTL=no
    IPADDR=172.20.36.11
    NETMASK=255.255.255.0
    NM_CONTROLLED=no
    

    3.2 修改聚合网卡的配置信息

    同样在/etc/sysconfig/network-scripts目录下,对需要聚合的两个网卡的配置文件进行修改,下面是虚拟机的实验环境的网卡信息:
    在这里插入图片描述
    我们使用了ifcfg-ens37ifcfg-ens38ifcfg-ens37ifcfg-ens38分别的配置信息为:

    # ens37
    DEVICE=ens37
    NAME=ens37
    ONBOOT=yes
    BOOTPROTO=none
    TYPE=Ethernet
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    NM_CONTROLLED=no
    
    # ens38
    DEVICE=ens38
    NAME=ens38
    ONBOOT=yes
    BOOTPROTO=none
    TYPE=Ethernet
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    NM_CONTROLLED=no
    

    3.3 最后的配置

    使用以下两个配置完成最后的配置,完成配置后即可。

    modprobe bonding
    systemctl restart network
    

    重启之后用ethtool bonding就能看到详细的聚合信息。
    在这里插入图片描述
    聚合的网卡详细信息再目录/proc/net/bonding/bond0下:
    在这里插入图片描述

    3.4 带宽的测试

    使用测试工具iperf3测试,分别在聚合机器上启动两个端口监听,然后找两台单独的机器用iperf3向服务端发数据,测试的服务器的整体的上下行带宽都约为2000Mbps

    4.自动化脚本

    在上面流程的基础上实现了一个自动配置mode=6的聚合模式脚本,通过交互式的脚本,配置聚合。

    1. 启动脚本,开始配置聚合,其中172.20.36.14为虚拟ip
      在这里插入图片描述
    2. 选择聚合的网卡
      在这里插入图片描述
    3. 确认网卡
      在这里插入图片描述
    4. 聚合的过程
      在这里插入图片描述
    5. 聚合后的bond0
      在这里插入图片描述
      在这里插入图片描述
      自动化脚本参考
      参考资料:
      https://www.interserver.net/tips/kb/network-bonding-types-network-bonding/
      https://www.unixmen.com/linux-basics-create-network-bonding-on-centos-76-5/
      https://www.cnblogs.com/yxy-linux/p/8327818.html
      https://blog.csdn.net/wuanwujie/article/details/79855261
    展开全文
  • bond双网卡绑定

    2017-04-26 09:41:45
    bond双网卡绑定总结什么是bond? 所谓bond,一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。bond有七种模型:mod0:(balance-rr,平衡轮循环...

    bond双网卡绑定总结

     

    什么是bond?

          所谓bond,是一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。

     

    bond有七种模型:

    mod0:(balance-rr,平衡轮循环策略,提供负载均衡和容错能力),数据包传输是依次传输,第一个包从网卡1传输,第二个包从网卡2传输,第三个包从网卡3.......,一直循环直到传输完最后一个数据包。这种模式的bond有一个不完善的地方,如果一个数据包从不同的网卡传输,而中途再经过不同的链路,当客户端接受到数据包的时候,数据包就可能出现无序到达的情况,而无序到达的数据包需要重新发送,这样网络的性能便会大大下降。

    mod1:(active-backup,主备策略,提供冗余能力),只有一个网卡被使用,当一个网卡宕了之后,马上由备网卡接替主网卡的工作,为了避免交换机发生混乱,逻辑网卡的mac地址是唯一的。这种模型的bond可提高网络的可用性,但是它的资源利用率低,只有1/网卡个数(N)。

    mod2:(balance-xor,平衡策略,提供负载均衡和容错能力)---不是很明白实现原理与算法,有哪位大神知道的话,可以在下面留言,让小弟也开开眼界。

    mod3:(broadcast,广播策略,提供容错能力)每一个备网卡传输每个数据包。

    mod4:(802.3ad,动态链路聚合),创建聚合组,聚合组中的每个备网卡共享同样的速率和双工,必要条件是交换机需要支持802.3ad以及需要ethtool的支持

    mod5:(balance-tlb,适配器传输负载均衡),在每个网卡上根据当前的压力负载分配流量,如果正在工作的网卡宕了,另外的网卡接管宕机的网卡的mac地址。必要条件是:需要ethtool的支持。

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



    实验(mod0为例,其他mod大同小异)

     

    创建逻辑网卡的配置文件

    [root@bond network-scripts]# catifcfg-bond0   

    DEVICE=bond0

    BOOTPROTO=static

    ONBOOT=yes

    IPADDR=192.168.31.100

    NETMASK=255.255.255.0

    NETWORK=192.168.31.0

    GATEWAY=192.168.31.1

    BROADCAST=192.168.31.255

    BONDING_OPTS="mode=0  miimon=200"  #mode指定模式,miimon为探测的时间间隔(毫秒) 

    USERCTL=no     #是否允许非root用户控制该设备  yes|no

     

    修改物理网卡的配置文件

    [root@bond network-scripts]# catifcfg-eno16780032

    DEVICE=eno16780032

    BOOTPROTO=none

    MASTER=bond0    #指定master为bond0

    SLAVE=yes            #是否为附属

    USERCTL=no

     

    [root@bond network-scripts]# catifcfg-eno33561344

    DEVICE=eno33561344

    BOOTPROTO=none

    MASTER=bond0   

    SLAVE=yes

    USERCTL=no

     

    bond0是通过bonding的驱动来配置的,所以我们还需要为bond0这块网卡添加驱动支持,将这个驱动添加到 /etc/modprobe.d/ 这个目录下

    [root@bond ~]# cat/etc/modprobe.d/bonding.conf

    alias bond0 bonding

     

    加载bonding模块

    [root@bond ~]# modprobe  bonding

    [root@bond ~]# lsmod |grep bonding

    bonding               136705  0

     

    重启网络

    [root@bond ~]# systemctl restart network

    Job for network.service failed because thecontrol process exited with error code. See "systemctl statusnetwork.service" and "journalctl -xe" for details.

     

    bond network[10418]:Bringing up interface bond0:  Error:Connection activation failed: No suitable device found for this connection.

    bond network[10418]:Bringing up interface eno16780032: Error: Connection activation failed: Master device bond0 unmanaged ornot available for activation


    如果发现有如上报错,需要关闭NetworkManager。

    参考(https://access.redhat.com/discussions/2162171)

    [root@bond ~]# systemctl stopNetworkManager

    [root@bond ~]# systemctl disabledNetworkManager

     

    验证       #仔细观察发现物理网卡的mac地址和逻辑网卡的mac地址一样

    [root@bond ~]# ip add show

    3: eno16780032: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink

          valid_lft forever preferred_lft forever

    4: eno33561344: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink

          valid_lft forever preferred_lft forever

    5: bond0:<BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet 192.168.31.100/24 brd 192.168.31.255 scope global bond0

          valid_lft forever preferred_lft forever

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink tentative dadfailed

          valid_lft forever preferred_lft forever

     

    查看逻辑网口设备的信息

    [root@bond ~]# cat /proc/net/bonding/bond0

    Ethernet Channel Bonding Driver: v3.7.1(April 27, 2011)

     

    Bonding Mode: load balancing (round-robin)    #模式为负载均衡

    MII Status: up      #状态为up

    MII Polling Interval (ms): 200     #侦测间隔为200ms

    Up Delay (ms): 0     #启动延迟为0ms

    Down Delay (ms): 0   #关闭延迟为0ms

     

    Slave Interface: eno16780032

    MII Status: up     #状态up

    Speed: 10000 Mbps    #速率为10000

    Duplex: full       #全双工

    Link Failure Count: 0   

    Permanent HW addr: 00:0c:29:bc:7d:41  

    Slave queue ID: 0

     

    Slave Interface: eno33561344

    MII Status: up

    Speed: 10000 Mbps

    Duplex: full

    Link Failure Count: 0

    Permanent HW addr: 00:0c:29:bc:7d:4b

    Slave queue ID: 0

     

    测试


    冗余测试

    wKioL1j98KriBdsaAAAcNxG4wzE667.png                    

     

    模拟宕一个网口

    [root@bond ~]# ifconfig eno16780032 down

     

    ping正常

    wKiom1j98LzifX1AAAA3EhRUXGY694.png

     

    模拟宕另外一个网口

    [root@bond ~]# ifconfig eno33561344 down

     

    ping超时

    wKiom1j98MmwNJ_pAAAxnuicUmQ189.png

     

     

    网络性能测试(通过netperf工具)

     有关netperf的使用可以看看这篇文章:http://blog.itpub.net/22664653/viewspace-714569/


    逻辑网口的两个物理网卡正常工作之时

    [root@bond ~]# netserver    #在服务端运行netserver

     

    [root@localhost ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM     #-H 指定测试端,-l 指定测试时长,-t 指定测试模型,这里是TCP的批量传输

    MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

    Recv  Send    Send                         

    Socket Socket  Message Elapsed             

    Size  Size    Size     Time     Throughput 

    bytes bytes   bytes    secs.   10^6bits/sec 

     

     87380 16384  16384    60.00   10151.01

     

    模拟宕一个网卡

    [root@bond ~]# ifconfig  eno33561344 down

     

    [root@localhost ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM 

    MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

    Recv  Send    Send                         

    Socket Socket  Message Elapsed             

    Size  Size    Size     Time    Throughput 

    bytes bytes   bytes    secs.   10^6bits/sec 

     

     87380 16384  16384    60.00   9509.36  #吞吐量降低

     

    通过测试,做了bond之后,的确可以实现网口的冗余和网络性能的提高


    转载于:https://blog.51cto.com/132408/1919478

    展开全文
  • Linux双网卡绑定

    2017-08-22 12:44:00
    网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下...

    1 什么是bond

       网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下命令确定内核是否支持 bonding:

    1
    2
    3
    [root@lixin network-scripts]#cat /boot/config-2.6.32-573.el6.x86_64 |grep -i bonding
    CONFIG_BONDING=m
    [root@lixin network-scripts]#

    2 bond的模式

     

    bond的模式常用的有两种:

      mode=0(balance-rr)

        表示负载分担round-robin,并且是轮询的方式比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。

        优点:流量提高一倍

        缺点:需要接入交换机做端口聚合,否则可能无法使用

      mode=1(active-backup)

        表示主备模式,即同时只有1块网卡在工作。

        优点:冗余性高

        缺点:链路利用率低,两块网卡只有1块在工作

    bond其他模式:

      mode=2(balance-xor)(平衡策略)

        表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy,需要交换机配置port channel)

        特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

      mode=3(broadcast)(广播策略)

        表示所有包从所有网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。需要和交换机的聚合强制不协商方式配合。

        特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

      mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)

        表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy).标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。

        特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。

        必要条件:

            条件1:ethtool支持获取每个slave的速率和双工设定

            条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation

            条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

      mode=5(balance-tlb)(适配器传输负载均衡)

        是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。

        特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

        必要条件:

            ethtool支持获取每个slave的速率

      mode=6(balance-alb)(适配器适应性负载均衡)

        在5的tlb基础上增加了rlb(接收负载均衡receiveload balance).不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的.

        特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答不会被switch(交换机)阻截。

    bond模式小结:

        mode5和mode6不需要交换机端的设置,网卡能自动聚合。mode4需要支持802.3ad。mode0,mode2和mode3理论上需要静态聚合方式。

    3 配置bond

     

    测试环境:

    1
    2
    3
    4
    5
    [root@lixin ~]# cat/etc/redhat-release
    CentOS release 6.7 (Final)
    [root@lixin ~]# uname -r
    2.6.32-573.el6.x86_64
    [root@lixin~]#

     

    1、配置物理网卡

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [root@lixin network-scripts]#cat ifcfg-eth0    
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes         //可以没有此字段,就需要开机执行ifenslave bond0 eth0 eth1命令了。
    [root@lixin network-scripts]#
    [root@lixin network-scripts]#cat ifcfg-eth1    
    DEVICE=eth1
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes       
    [root@lixin network-scripts]#

     

    2、配置逻辑网卡bond0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@lixin network-scripts]#cat ifcfg-bond0     //需要我们手工创建
    DEVICE=bond0
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=10.0.0.10
    NETMASK=255.255.255.0
    DNS2=4.4.4.4
    GATEWAY=10.0.0.2
    DNS1=10.0.0.2
    [root@lixin network-scripts]#

    由于没有这个配置文件我们可以使用拷贝一个ifcfg-eth1来用:cp ifcfg-{eth0,bond1}

     

    3、加载模块,让系统支持bonding

    1
    2
    3
    4
    [root@lixin ~]# cat/etc/modprobe.conf  //不存在的话,手动创建(也可以放在modprobe.d下面)
    alias bond0 bonding
    options bond0 miimon=100 mode=0
    [root@lixin ~]#

    配置bond0的链路检查时间为100ms,模式为0。

     

    注意:

      linux网卡bonging的备份模式实验在真实机器上做完全没问题(前提是linux内核支持),但是在vmware workstation虚拟中做就会出现如下图问题。  

    wKiom1cltR7iDq7qAAAZty5SqTM486.png

      配置完成后出现如上图问题,但是bond0能够正常启动也能够正常使用,只不过没有起到备份模式的效果。当使用ifdown eth0后,网络出现不通现象。

    内核文档中有说明:bond0获取mac地址有两种方式,一种是从第一个活跃网卡中获取mac地址,然后其余的SLAVE网卡的mac地址都使用该mac地址;另一种是使用fail_over_mac参数,是bond0使用当前活跃网卡的mac地址,mac地址或者活跃网卡的转换而变。  

      既然vmware workstation不支持第一种获取mac地址的方式,那么可以使用fail_over_mac=1参数,所以这里我们添加fail_over_mac=1参数

    1
    2
    3
    4
    [root@lixin etc]# cat/etc/modprobe.d/modprobe.conf
    alias bond0 bonding
    options bond0 miimon=100 mode=0fail_over_mac=1
    [root@lixin etc]#

     

    4、加载bond module

    1
    [root@lixin etc]# modprobe bonding

     

    5、查看绑定结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [root@lixin etc]# cat/proc/net/bonding/bond0
    Ethernet Channel BondingDriver: v3.7.1 (April 27, 2011)
      
    Bonding Mode: load balancing(round-robin)
    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: 0
    Permanent HW addr:00:50:56:28:7f:51
    Slave queue ID: 0
      
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr:00:50:56:29:9b:da
    Slave queue ID: 0
    [root@lixin etc]#

    4 测试bond

     

       由于使用的是mode=0,负载均衡的方式,这时我们ping百度,然后断开一个网卡,此时ping不会中断。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    [root@lixin etc]# pingbaidu.com
    PING baidu.com (111.13.101.208)56(84) bytes of data.
    64 bytes from 111.13.101.208:icmp_seq=1 ttl=128 time=10.6 ms
    64 bytes from 111.13.101.208:icmp_seq=2 ttl=128 time=9.05 ms
    64 bytes from 111.13.101.208:icmp_seq=3 ttl=128 time=11.7 ms
    64 bytes from 111.13.101.208:icmp_seq=4 ttl=128 time=7.93 ms
    64 bytes from 111.13.101.208:icmp_seq=5 ttl=128 time=9.50 ms
    64 bytes from 111.13.101.208:icmp_seq=6 ttl=128 time=7.17 ms
    64 bytes from 111.13.101.208:icmp_seq=7 ttl=128 time=21.2 ms
    64 bytes from 111.13.101.208:icmp_seq=8 ttl=128 time=7.46 ms
    64 bytes from 111.13.101.208:icmp_seq=9 ttl=128 time=7.82 ms
    64 bytes from 111.13.101.208:icmp_seq=10 ttl=128 time=8.15 ms
    64 bytes from 111.13.101.208:icmp_seq=11 ttl=128 time=6.89 ms
    64 bytes from 111.13.101.208: icmp_seq=12ttl=128 time=8.33 ms
    64 bytes from 111.13.101.208:icmp_seq=13 ttl=128 time=8.65 ms
    64 bytes from 111.13.101.208:icmp_seq=14 ttl=128 time=7.16 ms
    64 bytes from 111.13.101.208:icmp_seq=15 ttl=128 time=9.31 ms
    64 bytes from 111.13.101.208:icmp_seq=16 ttl=128 time=10.5 ms
    64 bytes from 111.13.101.208:icmp_seq=17 ttl=128 time=7.61 ms
    64 bytes from 111.13.101.208:icmp_seq=18 ttl=128 time=10.2 ms
    ^C
    --- baidu.com ping statistics---
    18 packets transmitted, 18received, 0% packet loss, time 17443ms
    rtt min/avg/max/mdev = 6.899/9.417/21.254/3.170 ms
    //用另一个终端手动关闭eth0网卡,ping并没有中断
    [root@lixin etc]# !ca
    cat /proc/net/bonding/bond0
    Ethernet Channel BondingDriver: v3.7.1 (April 27, 2011)
      
    Bonding Mode: load balancing(round-robin)
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
      
    Slave Interface: eth0
    MII Status: down
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 1
    Permanent HW addr:00:50:56:28:7f:51
    Slave queue ID: 0
      
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr:00:50:56:29:9b:da
    Slave queue ID: 0
    [root@lixin etc]#

    //查看bond0状态,发现eth0,down了,但是bond正常

    转载于:https://www.cnblogs.com/yangxiaochu/p/7411045.html

    展开全文
  • bond双网卡绑定总结

    2017-04-24 20:05:19
    bond双网卡绑定总结什么是bond? 所谓bond,一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。bond有七种模型:mod0:(balance-rr,平衡轮循环...

    bond双网卡绑定总结

     

    什么是bond?

          所谓bond,是一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。

     

    bond有七种模型:

    mod0:(balance-rr,平衡轮循环策略,提供负载均衡和容错能力),数据包传输是依次传输,第一个包从网卡1传输,第二个包从网卡2传输,第三个包从网卡3.......,一直循环直到传输完最后一个数据包。这种模式的bond有一个不完善的地方,如果一个数据包从不同的网卡传输,而中途再经过不同的链路,当客户端接受到数据包的时候,数据包就可能出现无序到达的情况,而无序到达的数据包需要重新发送,这样网络的性能便会大大下降。

    mod1:(active-backup,主备策略,提供冗余能力),只有一个网卡被使用,当一个网卡宕了之后,马上由备网卡接替主网卡的工作,为了避免交换机发生混乱,逻辑网卡的mac地址是唯一的。这种模型的bond可提高网络的可用性,但是它的资源利用率低,只有1/网卡个数(N)。

    mod2:(balance-xor,平衡策略,提供负载均衡和容错能力)---不是很明白实现原理与算法,有哪位大神知道的话,可以在下面留言,让小弟也开开眼界。

    mod3:(broadcast,广播策略,提供容错能力)每一个备网卡传输每个数据包。

    mod4:(802.3ad,动态链路聚合),创建聚合组,聚合组中的每个备网卡共享同样的速率和双工,必要条件是交换机需要支持802.3ad以及需要ethtool的支持

    mod5:(balance-tlb,适配器传输负载均衡),在每个网卡上根据当前的压力负载分配流量,如果正在工作的网卡宕了,另外的网卡接管宕机的网卡的mac地址。必要条件是:需要ethtool的支持。

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



    实验(mod0为例,其他mod大同小异)

     

    创建逻辑网卡的配置文件

    [root@bond network-scripts]# catifcfg-bond0   

    DEVICE=bond0

    BOOTPROTO=static

    ONBOOT=yes

    IPADDR=192.168.31.100

    NETMASK=255.255.255.0

    NETWORK=192.168.31.0

    GATEWAY=192.168.31.1

    BROADCAST=192.168.31.255

    BONDING_OPTS="mode=0  miimon=200"  #mode指定模式,miimon为探测的时间间隔(毫秒) 

    USERCTL=no     #是否允许非root用户控制该设备  yes|no

     

    修改物理网卡的配置文件

    [root@bond network-scripts]# catifcfg-eno16780032

    DEVICE=eno16780032

    BOOTPROTO=none

    MASTER=bond0    #指定master为bond0

    SLAVE=yes            #是否为附属

    USERCTL=no

     

    [root@bond network-scripts]# catifcfg-eno33561344

    DEVICE=eno33561344

    BOOTPROTO=none

    MASTER=bond0   

    SLAVE=yes

    USERCTL=no

     

    bond0是通过bonding的驱动来配置的,所以我们还需要为bond0这块网卡添加驱动支持,将这个驱动添加到 /etc/modprobe.d/ 这个目录下

    [root@bond ~]# cat/etc/modprobe.d/bonding.conf

    alias bond0 bonding

     

    加载bonding模块

    [root@bond ~]# modprobe  bonding

    [root@bond ~]# lsmod |grep bonding

    bonding               136705  0

     

    //在centos7里面是不加载bonding也OK,但是你做如上操作也无妨


    重启网络

    [root@bond ~]# systemctl restart network

    Job for network.service failed because thecontrol process exited with error code. See "systemctl statusnetwork.service" and "journalctl -xe" for details.

     

    bond network[10418]:Bringing up interface bond0:  Error:Connection activation failed: No suitable device found for this connection.

    bond network[10418]:Bringing up interface eno16780032: Error: Connection activation failed: Master device bond0 unmanaged ornot available for activation


    如果发现有如上报错,需要在网卡的配置文件里面加入

    NM_CONTORLLED=no

     

    验证       #仔细观察发现物理网卡的mac地址和逻辑网卡的mac地址一样

    [root@bond ~]# ip add show

    3: eno16780032: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink

          valid_lft forever preferred_lft forever

    4: eno33561344: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink

          valid_lft forever preferred_lft forever

    5: bond0:<BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

       link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

       inet 192.168.31.100/24 brd 192.168.31.255 scope global bond0

          valid_lft forever preferred_lft forever

       inet6 fe80::20c:29ff:febc:7d41/64 scopelink tentative dadfailed

          valid_lft forever preferred_lft forever

     

    查看逻辑网口设备的信息

    [root@bond ~]# cat /proc/net/bonding/bond0

    Ethernet Channel Bonding Driver: v3.7.1(April 27, 2011)

     

    Bonding Mode: load balancing (round-robin)    #模式为负载均衡

    MII Status: up      #状态为up

    MII Polling Interval (ms): 200     #侦测间隔为200ms

    Up Delay (ms): 0     #启动延迟为0ms

    Down Delay (ms): 0   #关闭延迟为0ms

     

    Slave Interface: eno16780032

    MII Status: up     #状态up

    Speed: 10000 Mbps    #速率为10000

    Duplex: full       #全双工

    Link Failure Count: 0   

    Permanent HW addr: 00:0c:29:bc:7d:41  

    Slave queue ID: 0

     

    Slave Interface: eno33561344

    MII Status: up

    Speed: 10000 Mbps

    Duplex: full

    Link Failure Count: 0

    Permanent HW addr: 00:0c:29:bc:7d:4b

    Slave queue ID: 0

     

    测试


    冗余测试

    wKioL1j98KriBdsaAAAcNxG4wzE667.png                    

     

    模拟宕一个网口

    [root@bond ~]# ifconfig eno16780032 down

     

    ping正常

    wKiom1j98LzifX1AAAA3EhRUXGY694.png

     

    模拟宕另外一个网口

    [root@bond ~]# ifconfig eno33561344 down

     

    ping超时

    wKiom1j98MmwNJ_pAAAxnuicUmQ189.png

     

     

    网络性能测试(通过netperf工具)

     有关netperf的使用可以看看这篇文章:http://blog.itpub.net/22664653/viewspace-714569/


    逻辑网口的两个物理网卡正常工作之时

    [root@bond ~]# netserver    #在服务端运行netserver

     

    [root@localhost ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM     #-H 指定测试端,-l 指定测试时长,-t 指定测试模型,这里是TCP的批量传输

    MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

    Recv  Send    Send                         

    Socket Socket  Message Elapsed             

    Size  Size    Size     Time     Throughput 

    bytes bytes   bytes    secs.   10^6bits/sec 

     

     87380 16384  16384    60.00   10151.01

     

    模拟宕一个网卡

    [root@bond ~]# ifconfig  eno33561344 down

     

    [root@localhost ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM 

    MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

    Recv  Send    Send                         

    Socket Socket  Message Elapsed             

    Size  Size    Size     Time    Throughput 

    bytes bytes   bytes    secs.   10^6bits/sec 

     

     87380 16384  16384    60.00   9509.36  #吞吐量降低

     

    通过测试,做了bond之后,的确可以实现网口的冗余和网络性能的提高 



    如有纰漏,欢迎指正。我对bond七种模式不是很明白理解透彻,这篇文章只是讲了个大概。另外,如果各位博友有立志从事关于linux方面的事业,可以留下您的联系方式或者博客首页,我将主动联系您,大家互相提高,一起共勉。

    转载于:https://blog.51cto.com/lidaxia/1918978

    展开全文
  • 公司的环境这样的:  一台物理机需要做双网卡绑定,同时呢,在双网卡绑定的... 网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2...
  • LINUX 双网卡

    2013-03-04 18:25:42
    一、什么是bonding Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余 二、bonding应用方向 1、网络负载均衡 对于bonding的网络负载均衡我们在...
  • Linux双网卡绑定bond详解

    万次阅读 2018-01-31 20:46:14
     网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下...
  • 网卡bond通过多张网卡绑定为一个逻辑网卡,实现网卡冗余,带宽扩容和负载均衡,这在生产场景中一种常用的技术。通俗点讲就是两块网卡或多张具有相同的IP地址而并行链接聚合成一个逻辑链路工作。这项技术在...
  • 网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下...
  • bond的意思通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。 bond的模式有6种 其中主要模式有: bond0: round-robin(论循) 特点:按照设备顺序...
  • linux--双网卡绑定bond

    2020-02-16 18:34:52
    网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下...
  • 网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。 适用场景 服务器两张网卡需要做bond,并且bond后网卡需配置不同网段的地址,用于走不同流量...
  • 详解Linux双网卡绑定之bond0

    万次阅读 2018-06-08 16:42:32
     网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。2、实现原理:...
  • linux 双网卡bond绑定

    2012-09-17 14:05:38
    一、什么是bondingLinux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余二、bonding应用方向Bonding实现的原理:什么是bonding需要从网卡的混杂(promisc)...
  • 摘要:本文主要介绍和配置 在Ubuntu下 实现 bonding,双网卡负载,bonding模式为0,好处负载平衡,另一网卡断了,也能工作。 什么是bonding Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口...
  • 一、什么是bond? ... 网卡bond通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中一种常用的技术。kernels 2.4.12及以后的版本均供bonding模块,以...
  • 网卡bond通过多张网卡绑定为一个逻辑网卡,实现网卡冗余,带宽扩容和负载均衡,这在生产场景中一种常用的技术。通俗点讲就是两块网卡或多张具有相同的IP地址而并行链接聚合成一个逻辑链路工作。这项技术在...
  • Ubuntu 12.04下实现双网卡负载均衡

    千次阅读 2014-09-03 17:06:08
    Ubuntu 12.04下实现双网卡负载均衡 什么是bonding   Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。   bonding的工作模式   bonding一共...
  • rhel6 bonding双网卡绑定

    2012-08-10 10:52:43
    一、什么是bondingLinux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余等。二、bonding应用方向1、网络负载均衡对于bonding的网络负载均衡我们在文件...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

双冗余网卡是什么