配置Network Teaming
1.什么是Network Teaming
现在的服务器至少都有两块网卡,如何同时充分利用这两张网卡,RHEL7(centos7)上推出了它的新应用Network Teaming。Network Teaming简单来说就是讲多个网卡绑定在一起,在逻辑上就相当于一个网卡,它可以提高网络的吞吐量与容错。在RHEL(centos7)中使用的是Teaming技术,而在REHL6(centos6)使用的是Bonding技术的应用。Network Teaming不同于旧版中Bonding技术,它提供更好的性能和扩展性
,Network Teaming由内核驱动和teamd守护进程实现。配置Teaming有两种方式,第一种是使用nmcli命令,第二种就是直接改配置文件。
2.配置方法及测试
Teaming有以下种模式:
broadcast
roundrobin
activebackup
loadbalance
lacp(implements the 802.3ad Link Aggregation Control Protocol)
常见的模式有activebackup模式、roundrobin模式
activebackup模式:
activebackup是主备模式,不需要交换机的支持,当网卡绑定成这种模式后,运行时一个物理网卡的状态是主的,另一个网卡的状态是备用的,平时是利用主网卡传输数据包,当主网卡损坏或意外失效时,备用的网卡就会接替主网卡,进行工作。
以下操作在centos7下操作,与REHL不同仅是开源免费使用,内核都是一样的。
activebackup模式配置如下:
(1) 首先查看该服务器的网卡:
[root@cnetos7 ~]#ip a 注:ip a 是ip addr的缩写,也可以用ifconfig命令查看
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:3e:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.18.134/24 brd 192.168.18.255 scope global dynamic ens33
valid_lft 1798sec preferred_lft 1798sec
inet6 fe80::8e0e:39e3:b318:863f/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:3e:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.18.133/24 brd 192.168.18.255 scope global dynamic ens34
valid_lft 1798sec preferred_lft 1798sec
inet6 fe80::c4db:7bad:474f:7c55/64 scope link
valid_lft forever preferred_lft forever
从上面可以观察到有两块网卡ens33与ens34.
或用nmcli connection show也可以看出
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet ens33
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet ens34
(2) 创建Team接口Team0,和设置teaming模式为activebackup
[root@cnetos7 network-scripts]#nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
成功添加的连接 'team0'(587accc9-9c55-4b5b-830f-22ad8e1eaff2)。
注:add 这里是添加
type team:类型team
con-name team0:起一个team的名字team0
ifname team0 :起连接的设备名字team0
'{"runner":{"name":"activebackup"}}'模式为activebackup的模式
[root@cnetos7 network-scripts]#nmcli connection show 注:已成功添加team0
名称 UUID 类型 设备
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet ens33
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet ens34
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team team0
(3)为Team0添加网络
[root@cnetos7 network-scripts]#nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.18.100/24
注:这里注意ipv4.method manual用手动指定,添加了一个ipv4.addresses 192.168.18.100/24的地址。
[root@cnetos7 network-scripts]#nmcli connection up team0 注:激活team0
成功激活(主服务器等待从服务器)连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/26)
(4)ping 测试连通性
[root@centos7 ~]#ping 192.168.18.100
PING 192.168.18.100 (192.168.18.100) 56(84) bytes of data.
From 192.168.18.22 icmp_seq=1 Destination Host Unreachable
From 192.168.18.22 icmp_seq=2 Destination Host Unreachable
From 192.168.18.22 icmp_seq=3 Destination Host Unreachable
From 192.168.18.22 icmp_seq=4 Destination Host Unreachable
From 192.168.18.22 icmp_seq=5 Destination Host Unreachable
From 192.168.18.22 icmp_seq=6 Destination Host Unreachable
From 192.168.18.22 icmp_seq=7 Destination Host Unreachable
From 192.168.18.22 icmp_seq=8 Destination Host Unreachable
From 192.168.18.22 icmp_seq=9 Destination Host Unreachable
From 192.168.18.22 icmp_seq=10 Destination Host Unreachable
64 bytes from 192.168.18.100: icmp_seq=11 ttl=64 time=1003 ms
64 bytes from 192.168.18.100: icmp_seq=12 ttl=64 time=2.64 ms
64 bytes from 192.168.18.100: icmp_seq=13 ttl=64 time=0.317 ms
64 bytes from 192.168.18.100: icmp_seq=14 ttl=64 time=0.297 ms
64 bytes from 192.168.18.100: icmp_seq=15 ttl=64 time=0.305 ms
64 bytes from 192.168.18.100: icmp_seq=16 ttl=64 time=0.365 ms
64 bytes from 192.168.18.100: icmp_seq=17 ttl=64 time=0.339 ms
64 bytes from 192.168.18.100: icmp_seq=18 ttl=64 time=0.359 ms
...........
注:刚开始我们没有添加分配ip,这里是ping不通,但一旦分配了ip启用了我们就能ping通。
(5)把物理接口加入到team0
[root@cnetos7 network-scripts]#nmcli connection add type team-slave ifname ens33 master team0
成功添加的连接 'team-slave-ens33'(d17e1033-bdd0-4964-bb91-655160e1a3f7)。
[root@cnetos7 network-scripts]#nmcli connection add type team-slave ifname ens34 master team0
成功添加的连接 'team-slave-ens34'(863ef795-fda1-4e45-877e-5acda2179f0f)。
[root@cnetos7 network-scripts]#nmcli connection show 注:查看添加连接情况
名称 UUID 类型 设备
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet ens33
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet ens34
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team team0
team-slave-ens33 d17e1033-bdd0-4964-bb91-655160e1a3f7 802-3-ethernet -- 注:这里我们只是关联成功,还没有启用。
team-slave-ens34 863ef795-fda1-4e45-877e-5acda2179f0f 802-3-ethernet --
(6)激活关联的网卡设备
[root@cnetos7 network-scripts]#nmcli connection up team-slave-ens33
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/27)
[root@cnetos7 network-scripts]#nmcli connection up team-slave-ens34
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/28)
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
team-slave-ens33 d17e1033-bdd0-4964-bb91-655160e1a3f7 802-3-ethernet ens33
team-slave-ens34 863ef795-fda1-4e45-877e-5acda2179f0f 802-3-ethernet ens34
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team team0
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet --
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet --
注:这里以成功激活连接网。,
(7)用teamdctl team0 state查看team0状态
[root@cnetos7 network-scripts]#teamdctl team0 state
setup:
runner: activebackup
ports:
ens33
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: ens33
注:从上面看到,teaming的模式为activebackup,同时有两个物理接口
分别是ens33与ens34,都是up状态,此时ens33作为主网卡使用。
到这里我们已经成功组建了teaming
(8)测试,加入我们让ens33网卡模拟失效,观看teaming的状态。
[root@cnetos7 network-scripts]#teamdctl team0 state
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 注:此时ens34自动接替ens33.
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
team-slave-ens34 863ef795-fda1-4e45-877e-5acda2179f0f 802-3-ethernet ens34
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team team0
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet --
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet --
team-slave-ens33 d17e1033-bdd0-4964-bb91-655160e1a3f7 802-3-ethernet --
[root@centos7 ~]#ping 192.168.18.100
PING 192.168.18.100 (192.168.18.100) 56(84) bytes of data.
64 bytes from 192.168.18.100: icmp_seq=1 ttl=64 time=0.532 ms
64 bytes from 192.168.18.100: icmp_seq=2 ttl=64 time=0.314 ms
64 bytes from 192.168.18.100: icmp_seq=3 ttl=64 time=0.319 ms
64 bytes from 192.168.18.100: icmp_seq=4 ttl=64 time=0.473 ms
64 bytes from 192.168.18.100: icmp_seq=5 ttl=64 time=0.416 ms
64 bytes from 192.168.18.100: icmp_seq=6 ttl=64 time=0.362 ms
64 bytes from 192.168.18.100: icmp_seq=7 ttl=64 time=0.435 ms
64 bytes from 192.168.18.100: icmp_seq=8 ttl=64 time=0.510 ms
64 bytes from 192.168.18.100: icmp_seq=9 ttl=64 time=0.320 ms
64 bytes from 192.168.18.100: icmp_seq=10 ttl=64 time=0.377 ms
64 bytes from 192.168.18.100: icmp_seq=11 ttl=64 time=0.304 ms
64 bytes from 192.168.18.100: icmp_seq=12 ttl=64 time=0.295 ms
64 bytes from 192.168.18.100: icmp_seq=13 ttl=64 time=0.264 ms
64 bytes from 192.168.18.100: icmp_seq=14 ttl=64 time=0.302 ms
64 bytes from 192.168.18.100: icmp_seq=15 ttl=64 time=0.346 ms
64 bytes from 192.168.18.100: icmp_seq=16 ttl=64 time=0.312 ms
64 bytes from 192.168.18.100: icmp_seq=17 ttl=64 time=0.300 ms
64 bytes from 192.168.18.100: icmp_seq=18 ttl=64 time=0.346 ms
64 bytes from 192.168.18.100: icmp_seq=19 ttl=64 time=0.350 ms
64 bytes from 192.168.18.100: icmp_seq=20 ttl=64 time=0.343 ms
64 bytes from 192.168.18.100: icmp_seq=21 ttl=64 time=0.291 ms
64 bytes from 192.168.18.100: icmp_seq=22 ttl=64 time=0.325 ms
注:ping继续能ping通
roundrobin模式
roundrobin模式也称为轮循模式,它是基于每一个包的,当某一台服务器的两个网卡设置为roundrobin模式的Teaming,此时服务器发出的数据包,就会在两个物理网卡上进行轮循,即第一个数据包走第一个网卡,第二个数据包走第二个网卡,依次轮循。
(1)修改team0配置文件。(如果想重新设置按上面的步骤亦可,因做过activebackup模式,故此也可以直接修改配置文件)
[root@cnetos7 network-scripts]#cat ifcfg-team0
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=team0
UUID=587accc9-9c55-4b5b-830f-22ad8e1eaff2
ONBOOT=yes
DEVICETYPE=Team
IPADDR=192.168.18.100
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
[root@cnetos7 network-scripts]#cat ifcfg-team0
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"roundrobin\"}}"
注:在这项把上面的activebackup改成roundrobin。
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=team0
UUID=587accc9-9c55-4b5b-830f-22ad8e1eaff2
ONBOOT=yes
DEVICETYPE=Team
IPADDR=192.168.18.100
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
(2)让配置文件文件生效,先让team停止。
[root@cnetos7 network-scripts]#nmcli connection down team0
成功取消激活连接 'team0'(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/41)
[root@cnetos7 network-scripts]#systemctl restart network 注:这里最好重启下网络服务
[root@cnetos7 network-scripts]#nmcli connection up team0 重新激活team0
成功激活(主服务器等待从服务器)连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/47)
注:如果只重新启用team0,team-slave-ens34和team-slave-ens33不会一并重新激活启用,这里要自己手动在激活一次。
[root@cnetos7 network-scripts]#nmcli connection up team-slave-ens34
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/48)
[root@cnetos7 network-scripts]#nmcli connection up team-slave-ens33
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/49)
(3)查看team0状态
[root@cnetos7 network-scripts]#teamdctl team0 state
setup:
runner: roundrobin 注:这里已经从原来的activebackup模式改为roundrobin模式
ports:
ens33
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
3.删除teaming
(1)删除前我们应该停止team0的工作。
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
team-slave-ens33 d17e1033-bdd0-4964-bb91-655160e1a3f7 802-3-ethernet ens33
team-slave-ens34 863ef795-fda1-4e45-877e-5acda2179f0f 802-3-ethernet ens34
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team team0
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet --
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet --
[root@cnetos7 network-scripts]#nmcli connection down team0
成功取消激活连接 'team0'(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/47)
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet ens33
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet ens34
team-slave-ens33 d17e1033-bdd0-4964-bb91-655160e1a3f7 802-3-ethernet --
team-slave-ens34 863ef795-fda1-4e45-877e-5acda2179f0f 802-3-ethernet --
team0 587accc9-9c55-4b5b-830f-22ad8e1eaff2 team --
此时原有的ens33与ens34接替工作。
(2)删除team0的配置文件
[root@cnetos7 network-scripts]#ls 用lsl列出网络配置里的文件
ifcfg-ens33 ifdown-ipv6 ifup-bnep ifup-sit
ifcfg-ens34 ifdown-isdn ifup-eth ifup-Team
ifcfg-lo ifdown-post ifup-ib ifup-TeamPort
ifcfg-team0 ifdown-ppp ifup-ippp ifup-tunnel
ifcfg-team-slave-ens33 ifdown-routes ifup-ipv6 ifup-wireless
ifcfg-team-slave-ens34 ifdown-sit ifup-isdn init.ipv6-global
ifdown ifdown-Team ifup-plip network-functions
ifdown-bnep ifdown-TeamPort ifup-plusb network-functions-ipv6
ifdown-eth ifdown-tunnel ifup-post
ifdown-ib ifup ifup-ppp
ifdown-ippp ifup-aliases ifup-routes
[root@cnetos7 network-scripts]#nmcli connection delete team0 删除team0
成功删除连接 'team0'(587accc9-9c55-4b5b-830f-22ad8e1eaff2)。
[root@cnetos7 network-scripts]#nmcli connection delete team-slave-ens33 删除team-slave-ens33
成功删除连接 'team-slave-ens33'(d17e1033-bdd0-4964-bb91-655160e1a3f7)。
[root@cnetos7 network-scripts]#nmcli connection delete team-slave-ens34 删除team-slave-ens34
成功删除连接 'team-slave-ens34'(863ef795-fda1-4e45-877e-5acda2179f0f)。
[root@cnetos7 network-scripts]#ls 注:查看此时删掉了关于team0配置文件
ifcfg-ens33 ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
ifcfg-ens34 ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
(3)查看网路配置是否恢复到最开始没有配置的状态。
[root@cnetos7 network-scripts]#nmcli connection show
名称 UUID 类型 设备
ens33 9a06e4c2-8a29-4b12-8795-06c2cb84fe24 802-3-ethernet ens33
ens34 a87b61c4-a519-490c-bef2-5ce6c01627a7 802-3-ethernet ens34
[root@cnetos7 network-scripts]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:3e:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.18.133/24 brd 192.168.18.255 scope global dynamic ens34
valid_lft 1287sec preferred_lft 1287sec
inet6 fe80::c4db:7bad:474f:7c55/64 scope link
valid_lft forever preferred_lft forever
13: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:3e:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.18.134/24 brd 192.168.18.255 scope global dynamic ens33
valid_lft 1287sec preferred_lft 1287sec
inet6 fe80::8e0e:39e3:b318:863f/64 scope link
valid_lft forever preferred_lft forever
注:这里已经恢复到原有状态。
RHEL7(centos7)的网卡绑定技术,不仅可以实现沉余还可以提高网络的吞吐量。还有多种模式可以选择,有效的利用了两块网卡。
如有不足请多多指教!