网卡绑定bond0的实现

志不强者智不达,言不信者行不果。这篇文章主要讲述网卡绑定bond0的实现相关的知识,希望能为你提供帮助。
    Bonding是将多块网卡绑定同一ip地址对外提供服务,可以实现高可用或者负载均衡。默认情况下,无法给不同网卡配置同一个ip地址,通过bonding,创建一个虚拟网卡(Master角色)对外提供连接,然后在此虚拟机上绑定多块物理网卡(Slave角色),它们将共用MAC地址。这样一来,流量将以master虚拟网卡为导向分配给各slave物理网卡,从而实现流量的负载均衡或高可用。
【网卡绑定bond0的实现】    不配合交换机的情况下,笔者这边就以mod=1(主-备份策略)的模式来演示双网卡绑定bond0的实现。

  1. 添加网卡
      虚拟机在默认情况下是只有一个网卡的(如下图)

    在VMware Workstation窗口添加网卡,选择要进行bonding的虚拟机,右键选择“设置”,或者虚拟机关机状态下直接点击“设备”部分的“网络适配器”来添加,网络连接选择“NAT模式”(如下图)

    添加完网卡后,执行 ip a 命令,我们可以看到除了eth0网卡外,还多了一个eth1网卡(如下图)



  1. 创建bond0
    开启另一台虚拟机centos8.3,笔者这边假设将要创建的bond0的ip地址为10.10.10.100,在新开启的虚拟机centos8.3上执行 ping 10.10.10.100 命令,此时是ping不通的(如下图)

    在虚拟机8.3-2上创建bond0,取名mybond0(该处随意,填写其他也行),接口为bond0,类型为bond设备,模式为主-备份策略,选择手动指定ipv4地址10.10.10.100,即执行  nmcli connection add con-name mybond0 ifname bond0 type bond mode active-backup ipv4.method manual ipv4.addresses 10.10.10.100/24 命令,执行 nmcli connection 命令可见多了一个bond0(如下图)

    进入到 /etc/sysconfig/network-scripts目录下可见已自动生成一个ifcfg-mybond0的文件,执行 cat ifcfg-mybond0 命令也可查看这个文件的信息(如下图)



  1. 绑定网卡
    分别执行  nmcli con add type bond-slave ifname eth1 master bond0 和  nmcli con add type bond-slave ifname eth0 master bond0 命令,将eth1和eth0网卡绑定到bond0上(如下图)

    执行 nmcli connection up bond-slave-eth1 和  nmcli connection up bond-slave-eth1  命令令其生效,切换到centos8.3上也可看到已经能ping通10.10.10.100的地址了(如下图)
      *如果是在xshell上操作的,执行eth0的命令后xshell会断开连接,需登录到10.10.10.100的ip后才可进行后续操作。




  1. 掐网卡测试
    执行 ip a 命令,可见eth0和eth1都没了地址,而且两者的Mac地址已变成相同的(如下图)

    执行  cat /proc/net/bonding/bond0 命令,可见当前bond0的主-备关系中,eth1为主,eth0处于备用状态(如下图)

    先来断开eth0的状态,断网后,centos8.3中仍能ping通10.10.10.100的地址,没有出现丢包现象(如下图)

    接下来重新连上eth0的网络连,断开处于主状态的eth1网络连接,断网后,centos8.3中也能ping通10.10.10.100的地址,没有出现丢包现象。在centos8.3-2主机上执行  cat /proc/net/bonding/bond0 命令,也可见当前处于主状态的改成了eth0,而eth1网卡处于down的状态(如下图)


    只有eth0和eth1都断开网络连接的情况下,centos8.3才无法ping通10.10.10.100的地址(如下图)

    通过这个实验,我们可以发现,mod=1的模式下,虽然两个网卡只有一个处于主状态,即工作状态,在一定程度上会造成浪费,但也减少了网卡出故障时导致的虚拟机不可用和数据丢失等现象。

    推荐阅读