1.Teaming技术就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟网卡;
2.我们可以通过Teaming技术做链路聚合,实现不同网卡的网卡的负载均衡和冗余;
1.一般在在RHEL5/RHEL6中使用的是Bonding,而RHEL7提供了一项新的实现技术Teaming,用来实现链路聚合的功能。
2.网卡的链路聚合一般常用的有"bond"和"team"两种模式,"bond"模式最多可以添加两块网卡,"team"模式最多可以添加八块网卡。
Team常用工作模式如下:
本次实践规划:
hostname | team接口IP地址 | 物理网卡 | 操作系统版本 |
---|---|---|---|
jeven | 192.168.200.126 | ens37/38/39/40 | centos 7.6 |
给虚拟机新增四张物理网卡
需要注意的是添加的网络适配器需网络模式一致,添加的个数为2的指数。
查看新增的4张网卡ens37/38/39/40,已正常添加。
[root@jeven ~]# ip add |grep ens
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.3.166/24 brd 192.168.3.255 scope global noprefixroute dynamic ens33
120: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.215/24 brd 192.168.200.255 scope global noprefixroute dynamic ens37
121: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.216/24 brd 192.168.200.255 scope global noprefixroute dynamic ens38
122: ens39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.212/24 brd 192.168.200.255 scope global noprefixroute dynamic ens39
126: ens40: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.217/24 brd 192.168.200.255 scope global noprefixroute dynamic ens40
通过teamd.conf查看team的工作模式
man teamd.conf
使用 nmcli 命令,添加一个 team 网络接口 team0,我们选择的team模式是activebakup主备模式。
[root@jeven ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
Connection 'team0' (7d4367b3-4f6b-4fbf-968f-daf110d7292b) successfully added.
配置team0接口的IP地址为192.168.200.126/24
mcli connection modify team0 ipv4.addresses 192.168.200.126/24 ipv4.method manual
将物理网卡ens37、ens38、ens39、ens40作为team0的子接口。
[root@jeven ~]# nmcli connection add type team-slave con-name team0-port1 ifname ens37 master team0
Connection 'team0-port1' (66450b15-fdec-48d8-9df4-ba8ab29c8633) successfully added.
[root@jeven ~]# nmcli connection add type team-slave con-name team0-port2 ifname ens38 master team0
Connection 'team0-port2' (dc869a3b-d9bd-49a7-a1b8-1368e5f2e0db) successfully added.
[root@jeven ~]# nmcli connection add type team-slave con-name team0-port3 ifname ens39 master team0
Connection 'team0-port3' (df21f75f-0343-45e7-9051-f3063cedfee0) successfully added.
[root@jeven ~]# nmcli connection add type team-slave con-name team0-port4 ifname ens40 master team0
Connection 'team0-port4' (58838a61-fb21-443f-a932-959ebd40c21e) successfully added.
重启网络服务
[root@jeven network-scripts]# nmcli con reload
[root@jeven network-scripts]# nmcli con up team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/38)
[root@jeven network-scripts]# nmcli con up team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/39)
[root@jeven network-scripts]# nmcli con up team0-port3
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/40)
[root@jeven network-scripts]# nmcli con up team0-port4
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/41)
检查team0接口的状态,当前活动的网卡为ens37。
[root@jeven network-scripts]# teamdctl team0 state
setup:
runner: activebackup
ports:
ens37
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens39
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens40
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens37
在宿主机,ping其team0的IP地址,网络正常。
ping 192.168.200.126 -t
在本机停用ens37网卡,在局域网其他主机测试其连通性。
[root@jeven ~]# ifdown ens37
Device 'ens37' successfully disconnected.
[root@jeven ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens39
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens40
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens40
继续查看网络连通性,网络正常,网络没有中断。
查看网卡连接信息
[root@jeven ~]# nmcli con show
NAME UUID TYPE DEVICE
docker0 85baca8e-d2b0-4fdc-bf5d-2d202ae7d2a3 bridge docker0
ens33 ba415981-963e-4130-984a-8dd764f4bb70 ethernet ens33
team0 7d4367b3-4f6b-4fbf-968f-daf110d7292b team team0
team0-port1 66450b15-fdec-48d8-9df4-ba8ab29c8633 ethernet ens37
team0-port2 dc869a3b-d9bd-49a7-a1b8-1368e5f2e0db ethernet ens38
team0-port3 df21f75f-0343-45e7-9051-f3063cedfee0 ethernet ens39
team0-port4 58838a61-fb21-443f-a932-959ebd40c21e ethernet ens40
virbr0 d83517b6-f9f1-434b-bf41-dcedb7cb1bde bridge virbr0
删除子接口
[root@jeven ~]# nmcli con delete team0-port4
Connection 'team0-port4' (58838a61-fb21-443f-a932-959ebd40c21e) successfully deleted.
[root@jeven ~]# nmcli con delete team0-port3
Connection 'team0-port3' (df21f75f-0343-45e7-9051-f3063cedfee0) successfully deleted.
查看网卡连接信息
[root@jeven ~]# nmcli con show
NAME UUID TYPE DEVICE
docker0 85baca8e-d2b0-4fdc-bf5d-2d202ae7d2a3 bridge docker0
ens33 ba415981-963e-4130-984a-8dd764f4bb70 ethernet ens33
team0 7d4367b3-4f6b-4fbf-968f-daf110d7292b team team0
team0-port1 66450b15-fdec-48d8-9df4-ba8ab29c8633 ethernet ens37
team0-port2 dc869a3b-d9bd-49a7-a1b8-1368e5f2e0db ethernet ens38
virbr0 d83517b6-f9f1-434b-bf41-dcedb7cb1bde bridge virbr0
Wired connection 4 02e53166-ccb4-38cf-b922-a5ffd8c549e5 ethernet ens40
Wired connection 1 2650ffb4-2ebf-361f-b30f-489f12a7b889 ethernet --
Wired connection 2 412789b9-ffeb-3280-8129-8c4465f0a779 ethernet --
Wired connection 3 80a0f41d-942f-3e88-8d22-c63604519d15 ethernet --
查看team接口状态
[root@jeven ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
ens37
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens38
重启team0,查看当前网络连接状态,ens39/40两张网卡已停止使用。
[root@jeven network-scripts]# nmcli con reload
[root@jeven network-scripts]# nmcli con up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/52)
[root@jeven network-scripts]# nmcli con show
NAME UUID TYPE DEVICE
docker0 85baca8e-d2b0-4fdc-bf5d-2d202ae7d2a3 bridge docker0
ens33 ba415981-963e-4130-984a-8dd764f4bb70 ethernet ens33
team0 7d4367b3-4f6b-4fbf-968f-daf110d7292b team team0
team0-port1 66450b15-fdec-48d8-9df4-ba8ab29c8633 ethernet ens37
team0-port2 dc869a3b-d9bd-49a7-a1b8-1368e5f2e0db ethernet ens38
virbr0 d83517b6-f9f1-434b-bf41-dcedb7cb1bde bridge virbr0
Wired connection 1 2650ffb4-2ebf-361f-b30f-489f12a7b889 ethernet --
Wired connection 2 412789b9-ffeb-3280-8129-8c4465f0a779 ethernet --
Wired connection 3 80a0f41d-942f-3e88-8d22-c63604519d15 ethernet --
Wired connection 4 02e53166-ccb4-38cf-b922-a5ffd8c549e5 ethernet --