在CentOS/RHEL 8/7上配置网络分组
问题:如何在CentOS/RHEL 8上配置网络组合?
或者如何在CentOS/RHEL 8/7上配置网络绑定?
在此博客文章中,我们将讨论如何在RHEL/CentOS 8/7上配置Network Teaming。
网络分组也可以称为NIC分组,通道绑定或者链路聚合。
组队涉及合并或者聚合网络链路,以提供具有更高吞吐量的逻辑链路或者提供冗余。
这种成组的概念被广泛称为在Linux内核中实现的绑定。
团队合作的概念和术语
teamd –一个应用程序守护程序,它使用libteam库来实现负载平衡和循环逻辑。
它通过Unix域Sockets.teamdctl进行监听和通信。
teamdctl–一种用于控制使用D-bus运行的teamd实例的实用程序。
它可以在运行时用于读取配置,链接监视程序的状态,检查和更改端口的状态,添加和删除端口以及在活动状态和备份状态之间更改端口。
不同负载共享和备份方法所独有的功能,例如循环。
用户在JSON格式配置文件中指定运行器,然后在创建实例时将代码编译为teamd实例
可用的运行步者(团队运行步模式)
广播–数据在所有端口上传输主动备份–使用一个端口或者链接,而其他端口作为备份循环–数据在所有端口上依次传输负载均衡–带有主动Tx负载平衡和基于BPF的Tx端口选择器-实现802.3ad链路聚合控制协议
网络团队链接观察者
ethtool –用于监视链接状态更改。
如果未在配置文件中指定其他链接监视程序,则为默认设置。
arp_ping–用于使用ARP数据包监视远端硬件地址的存在。
nsna_ping–用于监视邻居接口的存在
在RHEL/CentOS 8上配置网络分组守护程序
要安装teamd,请在终端中发出以下命令:
sudo dnf -y install teamd
可以通过以下方式获取安装的teamd版本:
$rpm -qi teamd Name : teamd Version : 1.27 Release : 9.el8 Architecture: x86_64 Install Date: Wed 26 Dec 2016 10:54:05 AM EAT Group : System Environment/Daemons Size : 291570 License : LGPLv2+ Signature : RSA/SHA256, Sat 25 Aug 2016 03:27:14 PM EAT, Key ID 199e2f91fd431d51 Source RPM : libteam-1.27-9.el8.src.rpm Build Date : Mon 20 Aug 2016 06:31:15 PM EAT Build Host : x86-vm-10.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. http://bugzilla.redhat.com/bugzilla Vendor : Red Hat, Inc. URL : http://www.libteam.org Summary : Team network device control daemon Description : The teamd package contains team network device control daemon.
使用nmcli配置网络分组
首先,确定将用作从站的网络接口。
# ip link show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp1s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:8f:8c:86 brd ff:ff:ff:ff:ff:ff 3: enp7s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:74:99:a9 brd ff:ff:ff:ff:ff:ff 4: enp8s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:2b:db:9c brd ff:ff:ff:ff:ff:ff
由于我在RHEL/CentOS 8服务器计算机上运行了NetworkManager,因此我将使用nmcli网络管理工具。
# nmcli connection show NAME UUID TYPE DEVICE enp1s0 498869bb-0d88-4a4c-a83a-c491d1040b0b ethernet enp1s0 Wired connection 1 48b9eacf-eb8b-348b-a44d-1d74ba22a6d6 ethernet enp7s0 Wired connection 2 10d1def1-39dc-3468-b9cd-263e72424383 ethernet enp8s0
在我的设置中,我将使用两个网络设备– enp7s0
和 enp8s0
。
在开始配置之前,请删除与nmcli的连接。
这两个设备现在应该处于断开连接状态。
$nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet connected enp1s0 enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- lo loopback unmanaged -
要创建一个名称为team0的新团队界面,请执行以下操作:
$nmcli connection add type team con-name team0 ifname team0 \ config '{ "runner": {"name": "loadbalance"}, "link_watch": {"name": "ethtool"}}'
我们可以将负载均衡替换为:activebackupbroadcastlacprandomroundrobinNetworkManager会将配置文件写入 /etc/sysconfig/network-scripts/ifcfg-team-team0
。
要查看分配的其他值,请运行:
$nmcli con show team0
使用以下命令查看刚刚配置的team接口。
$nmcli con show
为team 接口分配IP地址,DNS和自动连接。
nmcli con mod team0 ipv4.addresses 192.168.121.10/24 nmcli con mod team0 ipv4.gateway 192.168.121.1 nmcli con mod team0 ipv4.dns 8.8.8.8 nmcli con mod team0 ipv4.method manual nmcli con mod team0 connection.autoconnect yes
将网络从属添加到team。
nmcli con add type team-slave con-name team0-slave0 ifname enp7s0 master team0 nmcli con add type team-slave con-name team0-slave1 ifname enp8s0 master team0
输出示例。
Connection 'team0-slave0' (daa6fc23-cdef-40b1-9b9d-5157d6ff3910) successfully added. Connection 'team0-slave1' (a20cf7ee-fb08-4270-a6e7-b6e20cb490dc) successfully added.
确认连接详细信息。
重新启动连接。
nmcli connection down team0 && nmcli connection up team0
我们应该看到分配的IP信息。
$ip addr show dev team0 8: team0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:74:99:a9 brd ff:ff:ff:ff:ff:ff inet 192.168.121.10/24 brd 192.168.121.255 scope global noprefixroute team0 valid_lft forever preferred_lft forever inet6 fe80::4c51:96b:c24e:ede9/64 scope link noprefixroute valid_lft forever preferred_lft forever $ping -c 1 192.168.121.1 PING 192.168.121.1 (192.168.121.1) 56(84) bytes of data. 64 bytes from 192.168.121.1: icmp_seq=1 ttl=64 time=0.134 ms --- 192.168.121.1 ping statistics -- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.134/0.134/0.134/0.000 ms
team状态也可以通过 teamdctl
查看。
$teamdctl team0 state setup: runner: loadbalance ports: enp7s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp8s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0
如何使用nmcli删除team
显示连接详细信息。
$nmcli connection show NAME UUID TYPE DEVICE enp1s0 498869bb-0d88-4a4c-a83a-c491d1040b0b ethernet enp1s0 team0 f763a709-3956-497f-b92c-5c06f848bee7 team team0 team0-slave0 daa6fc23-cdef-40b1-9b9d-5157d6ff3910 ethernet enp7s0 team0-slave1 a20cf7ee-fb08-4270-a6e7-b6e20cb490dc ethernet enp8s0
关闭team连接
nmcli connection down team0
删除slave。
$nmcli connection delete team0-slave0 team0-slave1 Connection 'team0-slave0' (daa6fc23-cdef-40b1-9b9d-5157d6ff3910) successfully deleted. Connection 'team0-slave1' (a20cf7ee-fb08-4270-a6e7-b6e20cb490dc) successfully deleted.
删除创建的team。
$nmcli connection delete team0 Connection 'team0' (f763a709-3956-497f-b92c-5c06f848bee7) successfully deleted.
确认删除。
$nmcli connection show NAME UUID TYPE DEVICE enp1s0 498869bb-0d88-4a4c-a83a-c491d1040b0b ethernet enp1s0
使用ifcfg文件创建网络团队
要使用ifcfg文件创建网络团队,请在/etc/sysconfig/network-scripts /目录中创建一个文件,如下所示:
$cat /etc/sysconfig/network-scripts/ifcfg-team0 DEVICE=team0 NAME=team0 DEVICETYPE=Team ONBOOT=yes BOOTPROTO=none IPADDR=192.168.121.10 PREFIX=24 GATEWAY=192.168.121.1 TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'
要创建端口成为team0的成员,请在/etc/sysconfig/network-scripts /目录中创建一个或者多个文件,如下所示:
$cat /etc/sysconfig/network-scripts/ifcfg-team0-slave0 NAME=team0-slave0 DEVICE=enp7s0 ONBOOT=yes TEAM_MASTER=team0 DEVICETYPE=TeamPort $cat /etc/sysconfig/network-scripts/ifcfg-team0-slave1 NAME=team0-slave1 DEVICE=enp8s0 ONBOOT=yes TEAM_MASTER=team0 DEVICETYPE=TeamPort
启动team接口。
$sudo ip link set enp7s0 down $sudo ip link set enp8s0 down $sudo ifup team0
查看team端口。
$teamnl team0 ports 4: enp8s0: up 4294967295Mbit FD 3: enp7s0: up 4294967295Mbit FD
有关管理team接口的主要说明
启动主接口不会自动启动端口接口,启动端口接口总是会启动主接口,停止主接口也会停止端口接口,没有端口的主站可以静态启动 IP
连接。
没有端口的主机在启动时会等待端口 DHCP
一个大师与一个 DHCP
添加带有运营商的端口后,等待端口的连接完成。 DHCP
添加端口时,等待端口的连接会继续等待。