天天看点

网卡绑定bond0的实现

    Bonding是将多块网卡绑定同一ip地址对外提供服务,可以实现高可用或者负载均衡。默认情况下,无法给不同网卡配置同一个ip地址,通过bonding,创建一个虚拟网卡(Master角色)对外提供连接,然后在此虚拟机上绑定多块物理网卡(Slave角色),它们将共用MAC地址。这样一来,流量将以master虚拟网卡为导向分配给各slave物理网卡,从而实现流量的负载均衡或高可用。

    不配合交换机的情况下,笔者这边就以mod=1(主-备份策略)的模式来演示双网卡绑定bond0的实现。

  1. 添加网卡

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

网卡绑定bond0的实现

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

网卡绑定bond0的实现

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

网卡绑定bond0的实现
  1. 创建bond0

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

网卡绑定bond0的实现

    在虚拟机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(如下图)。

网卡绑定bond0的实现

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

网卡绑定bond0的实现
  1. 绑定网卡

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

网卡绑定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后才可进行后续操作。

网卡绑定bond0的实现
网卡绑定bond0的实现
  1. 掐网卡测试

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

网卡绑定bond0的实现

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

网卡绑定bond0的实现

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

网卡绑定bond0的实现

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

网卡绑定bond0的实现
网卡绑定bond0的实现

继续阅读