我的服务器上有四个数据接口:eno5、eno6、ens3f0 和 ens3f1。我需要为这四个接口创建端口绑定,VLAN ID 为 101,绑定名称为 data0。
更多信息:
- RHEL 7.6
- 已检查接口名称。(我已插上电缆,但一个接口出现故障)
- 对于此设置,我很可能使用模式 4。(不是网络人员……)
- UUID 已存在于配置文件中。我没有做任何更改。
编辑:更多信息:
- 没有虚拟化。我们这里讨论的是物理机。
- 交换机配置已全部设置。
- 这是全新、最小安装。是否有任何必要的软件包、内核模块或系统配置?
第一次尝试:按照 RHEL 文档中的方法进行操作:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-configuring_a_vlan_over_a_bond
除了本文档有两个接口,但我有四个。我用自己的值更改了接口和绑定名称。当然,IP、网关和子网也是我自己的。
结果:systemctl restart network 没问题。但接口甚至无法 ping 通自己的网关...
关于本次尝试:
- 模式选择与文档上的完全相同
第二次尝试:完全按照本文档中的内容进行操作:http://villasyslog.net/rhel-bonding-and-vlan-tagging/
再次,我有四个接口,因此改变了值。
结果:systemctl restart network 失败。我的绑定没有获取 IPv4 地址。相反,它显示了一些愚蠢的 IPv6 内容。
关于本次尝试:
- 没有 /etc/modprobe.d/bonding.conf 文件。
第一次尝试时,我在 /etc/sysconfig/network-scripts/ifcfg-* 下保存了四个接口和一个 bond 配置文件(总共 5 个)。
第二份文档建议使用更多文件。四个接口,一个用于绑定,另一个用于 VLAN 标记。不幸的是,我没有第一个配置文件,但我有第二个配置文件。它们如下:
ifcfg-data0
DEVICE=data0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
BONDING_MODULE_OPTS="mode=4 miimon=100"
BONDING_SLAVE0=ens3f1
BONDING_SLAVE1=ens3f0
BONDING_SLAVE2=eno6
BONDING_SLAVE3=eno5
VLAN=yes
IPV6INIT=no
ifcfg-data0.101
DEVICE=data0.101
BOOTPROTO=none
ONBOOT=yes
IPADDR=host IP
NETMASK=netmask
GATEWAY=gateway
NETWORK=first IP of network
BROADCAST=broadcast IP
USERCTL=no
BONDING_MODULE_OPTS="mode=4 miimon=100"
BONDING_SLAVE0="ens3f1"
BONDING_SLAVE1="ens3f0"
BONDING_SLAVE2="eno6"
BONDING_SLAVE3="eno5"
VLAN=yes
IPV6INIT=no
其他四个接口:
TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=eno5
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=eno6
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=ens3f0
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=ens3f1
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no
/proc/net/bonding 请求:
我在 /proc/net/bonding 下看到两个文件。其中一个是 bond0,但我不知道它是什么:
Bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
数据
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens3f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0
Slave Interface: ens3f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0
Slave Interface: eno6
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0
Slave Interface: eno5
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0
systemctl 重启网络:
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
systemctl 状态网络:
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2020-02-28 13:48:49 +03; 32s ago
Docs: man:systemd-sysv-generator(8)
Process: 37887 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) systemd[1]: network.service: control process exited, code=exited status=1
Feb 28 13:48:49 (host name here) systemd[1]: Failed to start LSB: Bring up/down networking.
Feb 28 13:48:49 (host name here) systemd[1]: Unit network.service entered failed state.
Feb 28 13:48:49 (host name here) systemd[1]: network.service failed.
起初,NetworkManager 正在运行。我已将其禁用,但 systemctl restart network 仍然失败。systemctl status NetworkManager 的输出:
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2020-02-28 13:46:58 +03; 2min 13s ago
Docs: man:NetworkManager(8)
Main PID: 35612 (code=exited, status=0/SUCCESS)
Feb 27 16:26:51 (host name here) NetworkManager[35612]: <info> [1582810011.3824] agent-manager: req[0x56187f15d3c0, :1.936/nmcli-connect/0]: agent registered
Feb 27 16:26:51 (host name here) NetworkManager[35612]: <info> [1582810011.3830] audit: op="connection-activate" uuid="09bce14a-449a-3065-8d1b-d4bcde243bd8" name="Vlan data0.744" result="fail" reason="Failed to find a compatible device for this connection"
Feb 28 13:46:58 (host name here) systemd[1]: Stopping Network Manager...
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8800] caught SIGTERM, shutting down normally.
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8846] device (ens3f0): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8851] device (ens3f1): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8856] device (eno5): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8860] device (eno6): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info> [1582886818.8890] exiting (success)
Feb 28 13:46:58 (host name here) systemd[1]: Stopped Network Manager.
答案1
首先,感谢对我的问题的所有评论。
据我所知,端口绑定有点像正则表达式。每个人都在指南中写了一些内容,不知何故这对他们有用。嗯,对我来说不是。
直到最近几天我才清楚我需要实现什么。但现在,我让它工作了。只剩下故障转移测试了。
这些到底有什么意义呢?
- 我有四个 10 Gbit 以太网端口。
- 我希望这四个能够协同工作并处理 40 Gbit 流量(理论上)。
- 因此我需要采用 lacp 模式的端口绑定。
- 必须在交换机端配置给定端口,以便使用给定端口通道与 lacp 进行端口绑定。这都是网络工作。不是我的。
那么,如何实现这一点呢?首先,我需要确保 NetworkManager 未运行且已被禁用:
systemctl stop NetworkManager
systemctl disable NetworkManager
然后,检查接口是否启动。为此,您需要确保网络服务正在运行:
systemctl status network #check if working
systemctl start network #start if not working
列出所有接口:
ip a
如果任何接口上有 IP,请确保它与绑定没有冲突。
为了放置您自己的配置,请停止网络服务:
systemctl stop network
你的配置文件应该位于在/etc/sysconfig/网络服务/目录。
从站示例:
ifcfg-eno5
DEVICE=eno5
NAME=bond0-slave3
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
让我们一行一行地看一下。
- 这是 RHEL 本身看到的接口名称。
- 名称是可选的。它适用于 TUI 或 GUI 软件。这是名为 bond0 的绑定的第 3 个从属设备。因此,名称为 bond0-slave3(请记住,我有四个从属设备。这是最后一个。其他的像 bond0-slave2(1, 0))。
剩下的就是,这是经典的以太网接口。MASTER 将是 bond0,是的,这是一个从属接口。网络管理器不应该控制此接口。
债券示例:
ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 lacp_rate=slow"
NM_CONTROLLED=no
- DEVICE 是绑定的名称。我将其命名为 bond0。
- NAME 与上面的相同。
- TYPE 不是以太网。这是大写字母 B 的 Bond。
- 该虚拟设备为绑定主设备。
- 它在启动时启动。
- 不知道那是什么。
- 不同类型的绑定选项会有所不同。这是速率较慢的 lacp 绑定,也称为绑定模式 4。
- 网络管理器不应该控制这个虚拟接口。
实际上,端口绑定在这里完成(除了我们需要定义 IP、子网和网关)。正如我所听到的,到目前为止,我已经设法配置为“访问模式”。这意味着,只有一个 VLAN 可以在此交换机上工作。但这不是我们想要的,交换机也不期望这种配置。所以我需要定义一个 VLAN ID 并告知该交换机。这种配置称为“中继模式”。
假设我的 VLAN ID 是 111。
VLAN 标记示例:
ifcfg-bond0.111
DEVICE=bond0.111
TYPE=Vlan
NAME=vlan-bond0.111
BOOTPROTO=none
ONPARENT=yes
IPADDR=IP adresi
NETMASK=subnet mask
GATEWAY=gateway
VLAN=yes
VLAN_ID=111
NM_CONTROLLED=no
我为我的虚拟设备命名。名称必须是 BOND_NAME.VLAN_ID,因此我使用了 bond0.111
类型必不可少。这既不是以太网也不是 Bond。这是一个 Vlan。此接口与服务器启动无关。如果父级已启动(我的意思是 bond0),则此接口也应启动。
IP、网络掩码和网关线路定义自身。
VLAN=yes !!!! RHEL 文档中说了这一点,而且这很重要。但我不知道。TYPE 是 Vlan,为什么我也要在 VLAN 上设置 yes 标志?随便吧。
到目前为止,我还没有在任何文档中看到 VLAN_ID。这是我的 VLAN 的 ID。
所有配置文件设置完成后,
systemctl start network
这应该可以正常工作。对我来说很有效。