Teaming和Bonding实现双网卡绑定一起来看。

  • Post author:
  • Post category:其他




一.初步了解bonding和Teaming:



1.bonding简介:

​ bonding技术是一种允许将多个物理以太网接口绑定成单一的虚拟接口,同时增加数据带宽并且提供故障切换的技术,是网卡层面的一种高可用方案。



2.Teaming简介:

​ teaming技术就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网络,这台服务器只有一个网络链接或者说只有一个可以访问的IP地址。

​ 利用Teaming 技术,除了利用多网卡同时工作来提高网络速度以外,还有可以通过Teaming实现不同网卡之间负载均衡和网卡冗余。



两种绑定模式:

  1. activebackup – 主备模式

    :一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。
  2. **roundrobin – 轮询模式:**所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力。



3. 应用

在RHEL5和RHEL6中使用的是Bonding。

在RHEL7中新引入Teaming,但是Bonding技术也是可用的。



二.bonding技术Teaming技术实现双网卡绑定


实验前准备:

  1. 在虚拟机上添加两块网卡

  2. 查看是否加载了bonding模块,若没有则加载后在进行实验。

[root@fei ~]# lsmod |grep bonding              #发现没有加载
[root@fei ~]# modprobe --first-time bonding    #手动加载
[root@fei ~]# lsmod |grep bonding
bonding               132885  0 



1.bonding技术实现双网卡绑定

实验用centos6。

实验前关闭NetworkManager

[root@fei ~]# service NetworkManager stop
[root@fei ~]# service NetworkManager status
NetworkManager 已停
  1. 创建bond0网卡配置文件
[root@fei ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE="bond"
BOOTPROTO="none"
NAME="bond0"
DEVICE="bond0"
IPADDR="192.168.126.130"     #ip
NETMASK="255.255.255.0"      #掩码
GATEWAY="192.168.126.2"      #网关
DNS1="8.8.8.8"               #DNS
DNS2="223.5.5.5"
ONBOOT="yes"                 #自动加载
BONDING_OPTS="mode=0 miimon=100"           #若是在centos7中则不用再此处添加在/etc/modprobe.d/bonding.conf(后边有补充)
  1. 编辑两块网卡配置文件,设置主从关系
etho和eth1两个配置文件

[root@fei network-scripts]# cat ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth0"
DEVICE="eth0"
MASTER="bond0"
SLAVE="yes"
ONBOOT="yes"

[root@fei network-scripts]# cat ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth1"
DEVICE="eth1"
MASTER="bond0"
SLAVE="yes"
ONBOOT="yes"

  1. 创建bond文件,并设置冗余模式(这一步为后来添加,如果在centos7上设置则要添加这一步,centos6直接到上一步就结束,可以重启了)
[root@fei modprobe.d]# vim /etc/modprobe.d/bonding.conf
alias bond0 binding
options bond0 miimon=100 mode=1
  1. 重启机器
[root@fei ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:71:d4:6b brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:71:d4:6b brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:71:d4:6b brd ff:ff:ff:ff:ff:ff
    inet 192.168.126.130/24 brd 192.168.126.255 scope global bond0
    inet6 fe80::20c:29ff:fe71:d46b/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
              
#此时ip已经绑定在了bond上



2.Teaming技术实现双网卡绑定

实验用centos7,以activebackup模式为实验

实验前确保有两个网卡,并且全部启动:启动命令: ifconfig 网卡名 up

  1. 创建虚拟网卡team0
[root@fei-7 ~]# nmcli connection add type team ifname team0 con-name team0 config '{"runner":{"name":"activebackup"}}'
Connection 'team0' (d2900fd4-c483-46c4-b57e-da3b7dfce923) successfully added.


[root@fei-7 ~]# nmcli con show                           #查看当前网卡信息
NAME   UUID                                  TYPE      DEVICE 
ens32  115e380c-3736-4282-b8fe-d24d6e70d88e  ethernet  ens32  
ens34  43f06f2b-5117-3220-ba95-9fca48e1ea99  ethernet  ens34  
team0  d2900fd4-c483-46c4-b57e-da3b7dfce923  team      team0 
  1. 绑定物理网卡
[root@fei-7 ~]#  nmcli connection add type team-slave ifname ens32 con-name team0-ens32 master team0
Connection 'team0-ens32' (0acd9e03-9d51-4bc9-b655-7fa77eec7e54) successfully added.
                                                                             #绑定ens32
[root@fei-7 ~]#  nmcli connection add type team-slave ifname ens34 con-name team0-ens34 master team0
Connection 'team0-ens34' (ad1234e5-0010-4064-bc63-befa2d787ad0) successfully added.
                                                                             #绑定ens34

[root@fei-7 ~]# nmcli con show
NAME         UUID                                  TYPE      DEVICE 
ens32        115e380c-3736-4282-b8fe-d24d6e70d88e  ethernet  ens32  
ens34        43f06f2b-5117-3220-ba95-9fca48e1ea99  ethernet  ens34  
team0        d2900fd4-c483-46c4-b57e-da3b7dfce923  team      team0  
team0-ens32  0acd9e03-9d51-4bc9-b655-7fa77eec7e54  ethernet  --     
team0-ens34  ad1234e5-0010-4064-bc63-befa2d787ad0  ethernet  -- 
  1. 给team0配置ip
[root@fei-7 ~]# nmcli conn mod team0 ipv4.addresses "192.168.126.130/24"   #添加ip
[root@fei-7 ~]# nmcli conn mod team0 ipv4.gateway "192.168.126.2"          #添加网关
[root@fei-7 ~]# nmcli conn mod team0 ipv4.dns "8.8.8.8"                    #添加DNS
[root@fei-7 ~]# nmcli connection modify team0 ipv4.method manual           
[root@fei-7 ~]# nmcli conn reload
[root@fei-7 ~]# nmcli conn up team0
  1. 配置完成重启机器就好
  2. 查看状态
[root@shisan ~]# teamdctl team0 state          #此时teaming中添加了两个网卡
setup:
  runner: activebackup
ports:
  ens32
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens32
  1. 测试一下
  • 断开ens32
[root@shisan ~]# nmcli device disconnect ens32
[root@shisan ~]# teamdctl team0 state       #此时teaming中只有ens34      
setup:
  runner: activebackup
ports:
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens34

  • 再启动
[root@shisan ~]# nmcli device connect ens32
[root@shisan ~]# teamdctl team0 state        #再次启动ens32teaming中有两个ip
setup:
  runner: activebackup
ports:
  ens32
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens32

到此 teaming绑定双网卡完成,实现了网卡的高可用,提高健壮性。



3.补充bonding的七种模式

  1. mode=0(balance-rr):

    mode=0具有负载均衡和容错的能力。采用Round Robin方式,依次有第一个slave网卡至最后一个slave网卡来传送数据包,每一块slave网卡都在轮流进行工作。如果其中一个slave网卡故障失效,整机的网络通信可以正常运转。需要上联交换机进行配置支持。
  2. mode=1(active-backup):

    mode=1模式下,同一时间只有一个网卡在工作,其他的网卡不工作。当当前的slave网卡故障失效后,其他的slave网卡开始接替工作。

    mode=1模式下,不需要上联交换机进行配置支持。
  3. mode=2(balance-xor):

    本模式下,既具备负载平衡功能,也具备容错功能。需要上联交换机进行配置支持。
  4. mode=3(broadcast):

    所有slave网卡都会接收和发送数据包,本模式主要提供容错能力,任一张slave网卡故障失效,整机的网络通信仍可正常运转。需要上联交换机进行配置支持。
  5. mode=4(802.3ad):

    802.3ad是正式的交换机连接聚合技术,需要交换机本身支持802.3ad,而本机网卡也需要支持ethtool
  6. mode=5(balance-tlb):

    该模式下,是根据每个slave网卡的负载情况选择slave网卡进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。该种模式不需要上联交换机做特殊的配置支持。如果正在接受数据的slave出故障了,另一个slave网卡会接管MAC地址。
  7. mode=6(balance-alb):

    该模式是在mode=5的tlb基础上增加了rlb(接收负载均衡receiveload balance)。不需要上联交换机做特殊配置支持。接收负载均衡是通过ARP协商实现的。



版权声明:本文为wdwangye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。