CentOS7不用Bond用Teaming更加灵活

在linux 中,centos7之前都是使用bond机制来实现多网络绑定同一个IP地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。而到了contos7之后,提供了一种强大的工具,nmcli工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在linux不再使用 bond机制定义,而是使用网路组 team 机制,把 team组当作一个设备。下面通过案例说。

主备模式team组案例:

环境查看:

这里在VM虚拟机中操作linux系统

#这里使用了3.10的linux内核

[root@mzf ~]# uname -r
3.10.0-327.el7.x86_64

#使用CentOS 7.2 发行版

[root@mzf ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

查看网卡:

[root@mzf ~]# ip -o link show up | awk -F': ' '{print $2}'
lo
eth0
eth1
[root@mzf ~]# ip link show up
wKioL1fVC4LCMqpcAAAnMnXAKPk194.png

说明:这里除去lo本地网络回环设备,本机有两块启用的网卡:eth0、eth1。

创建 team网络组:

#创建一个team设备,名称为team0,且使用主备模式:

[root@mzf ~]# nmcli connection add con-name team0 type team ifname team0 config '{"runer":{"name":"activebackup"}}'
Connection 'team0' (b9f8fdcc-8682-4b2e-bdc1-3eda2aef70d3) successfully added.

#设置team0组的IP、网关等信息:

1、设置到ip地址获取方式时,可以输入一个不存在的命令,来获取帮助信息

[root@mzf ~]# nmcli connection modify team0 ipv4.addresses 10.1.250.111/16 ipv4.gateway 10.1.0.1 ipv4.method help
Error: failed to modify ipv4.method: 'help' not among [auto, link-local, manual, shared, disabled].

2、通过上面我们发现了5中,其中manual就是静态IP地址,因此设置 method为manual

[root@mzf ~]# nmcli connection modify team0 ipv4.addresses 10.1.250.111/16 ipv4.gateway 10.1.0.1 ipv4.method manual

3、查看team0设备连接是否已经创建

[root@mzf ~]# nmcli connection show 
NAME         UUID                                  TYPE            DEVICE 
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet    eth0   
team0        b9f8fdcc-8682-4b2e-bdc1-3eda2aef70d3  team              team0  
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04   802-3-ethernet   eth1

说明:team0为刚才创建的设备,team为表示为网络组设备,其它表示两张网卡的配置被nmcli工具识别。

4、查看检查team0的ip获取模式:

[root@mzf ~]# nmcli connection show team0 | grep -A 4 '^ipv4.method'
ipv4.method:                     manual     #这里表示使用静态IP获取
ipv4.dns:                                   #创建时并未指定DNS
ipv4.dns-search:                        
ipv4.addresses:                  10.1.250.111/16  #刚才设置的IP 地址
ipv4.gateway:                    10.1.0.1         #指定的网关

5、查看配置文件是否自动生成

[root@mzf network-scripts]# ls -l /etc/sysconfig/network-scripts/ifcfg-team0 
-rw-r--r--. 1 root root 349 Sep  7 00:50 /etc/sysconfig/network-scripts/ifcfg-team0

解析:此配置文件记录了team0设备的一些了信息,格式与以往的以太网网卡配置信息格式相同。

将指定以太网网卡设备加入team0组成网路组

#将eth0设备加入team0网路组,并设置从设备名为team0-eth0

[root@mzf network-scripts]# nmcli connection add con-name team0-eth0 type team-slave autoconnect no 
ifname eth0 master team0 
Connection 'team0-eth0' (5e3d9d5c-934c-448f-8fc6-ab3b4371e812) successfully added.

#将eth1设备加入team0网路组,并设置从设备名为team0-eth1

[root@mzf network-scripts]# nmcli connection add con-name team0-eth1 type team-slave autoconnect no ifname eth1 master team0 
Connection 'team0-eth1' (bbb9bfe0-55df-4fe4-9d13-27535a4bb206) successfully added.

#查看网络组子网卡配置文件是否自动生成

[root@mzf network-scripts]# ls -l /etc/sysconfig/network-scripts/ifcfg-team0*
-rw-r--r--. 1 root root 349 Sep  7 00:50 /etc/sysconfig/network-scripts/ifcfg-team0
-rw-r--r--. 1 root root 118 Sep  7 01:03 /etc/sysconfig/network-scripts/ifcfg-team0-eth0
-rw-r--r--. 1 root root 118 Sep  7 01:04 /etc/sysconfig/network-scripts/ifcfg-team0-eth1

#再次查看设备连接列表

[root@mzf network-scripts]# nmcli connection show
NAME         UUID                                  TYPE            DEVICE 
team0-eth1   bbb9bfe0-55df-4fe4-9d13-27535a4bb206  802-3-ethernet  --     
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
team0-eth0   5e3d9d5c-934c-448f-8fc6-ab3b4371e812  802-3-ethernet  --     
team0        b9f8fdcc-8682-4b2e-bdc1-3eda2aef70d3  team         team0  
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  eth1

解析:这里发现好像eth0、eth1并未成功绑定到team0组中,这是因为,nmcli工具定义的机制,同一设备只能绑定在同一个配置中,也就是读取指定配置文件(ifcfg-eth0、ifcfg-eth1)中配置。因此这时,可以断开eth0、eth1原本的链接配置。

激活team0网络组成员

#断开原本的eth0链接

[root@mzf network-scripts]# nmcli device disconnect eth0

#启用team0-eth0网络组设备

[root@mzf network-scripts]# nmcli connection up  team0-eth0
wKiom1fVDEfyipzvAAAIjiQhiDE772.png

#断开原本的eth1链接

[root@mzf network-scripts]# nmcli device disconnect eth1

#启用team0-eth1网络组设备

[root@mzf network-scripts]# nmcli connection up  team0-eth1
wKiom1fVDHCD30mRAAAIor3IbRo262.png

#再次查看链接

wKioL1fVDIiS8bZ3AAAVlrRSxGU197.png

解析:此时eth1和eth0都已经本识别成了team0中的成员设备了,而以前的默认网卡配置以及与网卡失去了绑定关系。

确定网络的连通性

#查看team0设备Ip地址

ip  addr  show
wKiom1fVDK_zd1S9AAAveGsSwgY164.png

解析:这里了eth0和eth1已经绑定在一起,共同成为team0网络组的子成员,共同使用10.1.250.111地址。

#查看team0路由表及网关

wKiom1fVDMfxtUTUAAAJY5cmq9k221.png

解析:这里因为两张网卡被识别成了team0网络组设备,因此,路由表中也只是记录单个设备,无论发生数据来时接收数据,都是通过网络组中的路由表来识别。

主备模式的测试:

#查看team0当前使用状态

[root@mzf ~]# teamctl team0 state
wKioL1fVDNrBZIFhAAASo2u4mbk953.png

#断开 eth0这里使用虚拟机,因此点右下角的对应网卡”断开“即可,断开后图片变灰色

wKiom1fVDPSidlcBAAAHPp06EVA820.png

#再次查看状态

wKioL1fVDP6xWDZ_AAATO5febDA396.png

解析:原本都是up状态,而现在,eth1在启用,而eth0已经为断开状态,且显示了断开次数为1次。

#再次启用eth0

wKioL1fVDRuBCLIyAAAGw5jGFWY710.png

#再次查看team0状态

wKiom1fVDSmQFcBQAAAShjXV_wQ132.png

解析:现在已经都是启用状态了,当然,如果都断开,那么 team0就相当于没有了活动状态成员,也就失去了意义。

配置举例:

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=none
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 NAME=team0
 UUID=2540c6d4-ceae-4e84-8da5-ba82b0e88924
 DEVICE=team0
 ONBOOT=yes
 IPADDR=172.20.3.57
 PREFIX=24
 GATEWAY=172.20.3.1
 DEVICETYPE=Team
 TEAM_CONFIG='{"runner":{"name":"lacp"}}'
====================================
 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-ens1f0
 TEAM_CONFIG='{"runner":{"name":"lacp"}}'
 NAME=team0-ens1f0
 UUID=f274ce29-927f-4b17-bec2-14678698252f
 DEVICE=ens1f0
 ONBOOT=no
 TEAM_MASTER=team0
 DEVICETYPE=TeamPort
====================================
 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-ens1f1
 TEAM_CONFIG='{"runner":{"name":"lacp"}}'
 NAME=team0-ens1f1
 UUID=9953008a-3ced-4691-a29a-0118f8c520c6
 DEVICE=ens1f1
 ONBOOT=no
 TEAM_MASTER=team0
 DEVICETYPE=TeamPort
====================================
 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f0
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 NAME=ens1f0
 UUID=7971a3f2-5645-417c-91f6-c71444370313
 DEVICE=ens1f0
 ONBOOT=yes
 DEVICETYPE=TeamPort
 TEAM_MASTER=team0
 TEAM_PORT_CONFIG='{"prio":9}'
====================================
 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f1
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 NAME=ens1f1
 UUID=b3a31c09-81c4-4cda-8a09-0a2e014d0b89
 DEVICE=ens1f1
 ONBOOT=yes
 DEVICETYPE=TeamPort
 TEAM_MASTER=team0
 TEAM_PORT_CONFIG='{"prio":10}'
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip route add 0.0.0.0/0 via 172.20.3.1 dev team0

发表回复