在 centos 7 虚拟盒上,我创建了一个这样的团队:
nmcli connection add type team con-name team0 ifname veteam0
nmcli connection modify team0 team.config roundrobin.conf
[root@rhce1 ~]# cat roundrobin.conf
{
"device": "team0",
"runner": {"name": "roundrobin"},
"ports": {"enp0s9": {}, "enp0s10": {}}
}
# add slave interfaces
nmcli connection add type team-slave con-name team0-port0 ifname enp0s9 master team0
nmcli connection add type team-slave con-name team0-port1 ifname enp0s10 master team0
我现在有以下连接:
[root@rhce1 ~]# nmcli con s
NAME UUID TYPE DEVICE
team0 77869010-af1a-48a5-b10b-c05b3035837f team veteam0
team0-port1 99f54013-b20b-41d2-9661-d654b89870bd 802-3-ethernet enp0s10
team0-port0 3f5e5924-f7f3-409a-b4cb-661904ddbf60 802-3-ethernet enp0s9
Wired connection 1 acc2747d-9576-4ac5-a06a-d45d3a9a4ff4 802-3-ethernet enp0s3
enp0s3 b4db7dd8-8735-4590-b12f-621d1003841a 802-3-ethernet --
hostonly 8993c4c0-fa90-455d-ae83-d1a644c36886 802-3-ethernet enp0s8
这将正确启动所有接口:
[root@rhce1 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
enp0s10 ethernet connected team0-port1
enp0s3 ethernet connected Wired connection 1
enp0s8 ethernet connected hostonly
enp0s9 ethernet connected team0-port0
veteam0 team connected team0
lo loopback unmanaged --
我从 dhcp 获取虚拟团队接口的 IP:
[root@rhce1 ~]# ip addr show veteam0
6: veteam0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 08:00:27:c7:15:f1 brd ff:ff:ff:ff:ff:ff
inet 10.23.23.104/24 brd 10.23.23.255 scope global dynamic veteam0
valid_lft 1073sec preferred_lft 1073sec
inet6 fe80::a00:27ff:fec7:15f1/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
(我知道在典型的组合用例中可能不会使用 dhcp,但主要问题也存在于静态 IP 上。)
现在我希望能够断开连接,然后再次建立连接,而无需重新启动:
[root@rhce1 ~]# nmcli con down team0
[root@rhce1 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected Wired connection 1
enp0s8 ethernet connected hostonly
enp0s10 ethernet disconnected --
enp0s9 ethernet disconnected --
lo loopback unmanaged --
[root@rhce1 ~]# nmcli con up team0
Error: Device 'veteam0' is waiting for slaves before proceeding with activation.
[root@rhce1 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected Wired connection 1
enp0s8 ethernet connected hostonly
veteam0 team connecting (getting IP configuration) team0
enp0s10 ethernet disconnected --
enp0s9 ethernet unavailable --
lo loopback unmanaged -
现在可以通过首先连接 enp0s10 来使团队接口工作一半:
[root@rhce1 ~]# nmcli dev connect enp0s10
Device 'enp0s10' successfully activated with '99f54013-b20b-41d2-9661-d654b89870bd'.
[root@rhce1 ~]# nmcli con up team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
但是我的团队现在只由一个设备组成:
[root@rhce1 ~]# nmcli dev st
DEVICE TYPE STATE CONNECTION
enp0s10 ethernet connected team0-port1
enp0s3 ethernet connected Wired connection 1
enp0s8 ethernet connected hostonly
veteam0 team connected team0
enp0s9 ethernet unavailable --
lo loopback unmanaged --
我的问题是,我目前不知道如何在不重启的情况下启动 enp0s9,因为该设备处于“不可用”状态。我的理解是否正确,我应该能够像 enp0s10 一样在不重启的情况下启动 enp0s9 吗?在我看来,我的设备 enp0s9 似乎有些问题,但我不太清楚是什么问题。我已经尝试分配新的 MAC 地址,但没有帮助。此外,使用传统的 ifcfg 配置,我可以毫无问题地启动和关闭我的 team0 接口。
或者可能是我的虚拟交换机(我正在使用 VirtualBox hostonly 网络)不支持(?- 或者需要配置才能支持)组合?
编辑:我尝试建立一个只有一个从属设备的团队。这有效,并且我使用 enp0s9 和 enp0s10 得到了相同的行为 - 我必须先连接设备才能建立连接。这是否意味着我的虚拟交换机正在断开一个设备(碰巧是 enp0s9 - 但由于它是确定性的,因此它始终是 enp0s9)?
我并不真的需要“解决”这个问题——我很乐意将赏金提供给那些能帮助我了解发生了什么事情的人。
答案1
我们经常使用绑定/团队功能,主要在 Oracle Unbreakable Linux (RH CLONE) 上使用。我们通常使用 NMTUI,因为我们很懒……但我注意到你正在做的事情是:
- 取消团队界面
- 然后调出团队界面,奇怪的是它正在等待奴隶......
- 然后您手动启动其中一个从属服务器,而另一个从属服务器将变得不可用。
我们不必这么做。如果我们关闭团队界面,当我们将其打开时,它会检查从属设备的连接性并激活它们,而无需任何进一步的命令。您实际上从未“关闭”任何从属设备,因此您也不必“启动”它们。
您是否等待了足够长的时间让从属服务器启动?我们的服务器几乎立即启动,我在许多服务器上都遇到了这种情况,包括裸机上的 vsphere 以及 Oracle Unbreakable Linux。
“绑定” (团队) 接口应该管理所有绑定成员 (从属)。是的,您也可以将其与 DHCP 一起使用。
一些输出示例:
[root@goliath etc]# nmcli connection show
NAME UUID TYPE DEVICE
Ethernet connection 1 d676e7bb-4612-4946-b5c9-6afd694ec754 802-3-ethernet em1
Ethernet connection 3 8c6b99d1-e8c0-494d-9795-4fec4f5ba871 802-3-ethernet em3
Bond connection 1 1e7952cf-2b62-4494-8b3c-2b7bdde786c8 bond bond0
Ethernet connection 4 7c79016c-95a8-4e19-9a9b-30ea20d5455c 802-3-ethernet em4
Ethernet connection 2 b8c82461-9fae-4912-adc8-fc40fb13125b 802-3-ethernet em2
[root@goliath etc]#
[root@goliath etc]# nmcli dev status
DEVICE TYPE STATE CONNECTION
bond0 bond connected Bond connection 1
em1 ethernet connected Ethernet connection 1
em2 ethernet connected Ethernet connection 2
em3 ethernet connected Ethernet connection 3
em4 ethernet connected Ethernet connection 4
lo loopback unmanaged --
[root@goliath etc]#
以下是 nmtui 中显示的内容:
我还从其他一台服务器获得了数据,所以也许这会有所帮助:
]# nmcli dev show
GENERAL.DEVICE: bond0
GENERAL.TYPE: bond
GENERAL.HWADDR: 80:18:44:E5:39:E8
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: etherchannel 13 on CISCO
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/4
IP4.ADDRESS[1]: 192.168.10.10/0
IP4.GATEWAY: 192.168.10.129
IP4.ROUTE[1]: dst = 192.168.10.129/32, nh = 0.0.0.0, mt = 300
IP4.ROUTE[2]: dst = 192.168.10.10/32, nh = 0.0.0.0, mt = 0
IP4.ROUTE[3]: dst = 192.168.10.129/32, nh = 0.0.0.0, mt = 0
IP4.ROUTE[4]: dst = 0.0.0.0/0, nh = 192.168.10.129, mt = 0
IP4.ROUTE[5]: dst = 0.0.0.0/0, nh = 192.168.10.129, mt = 300
IP4.DNS[1]: 192.168.10.203
IP4.DNS[2]: 10.1.8.9
IP6.ADDRESS[1]: fe80::8218:44ff:fee5:39e8/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.ROUTE[2]: dst = fe80::/64, nh = ::, mt = 256
GENERAL.DEVICE: em2
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 80:18:44:E5:39:E8
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Ethernet connection 2
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER: on
IP4.GATEWAY: --
IP6.GATEWAY: --
GENERAL.DEVICE: em3
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 80:18:44:E5:39:E8
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Ethernet connection 3
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.GATEWAY: --
IP6.GATEWAY: --
GENERAL.DEVICE: em4
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 80:18:44:E5:39:E8
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Ethernet connection 4
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.GATEWAY: --
IP6.GATEWAY: --
GENERAL.DEVICE: em1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 80:18:44:E5:39:EA
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10 (unmanaged)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
[root@loki xyz]# nmcli dev status
DEVICE TYPE STATE CONNECTION
bond0 bond connected etherchannel 13 on CISCO
em2 ethernet connected Ethernet connection 2
em3 ethernet connected Ethernet connection 3
em4 ethernet connected Ethernet connection 4
em1 ethernet disconnected --
lo loopback unmanaged --
最初最困难的部分是确保服务器和网络交换机之间的绑定配置正确,以便双方都能理解绑定。然后我们通过拔掉电缆进行测试。
我真的希望这会有所帮助。
谢谢,大卫