在CentOS/Rhel 8/7上配置网络组合
问题:如何在CentOS/Rhel 8上配置网络组合?
或者如何在CentOS/RHEL 8/7上配置网络绑定?
在这篇文章中,我们将讨论如何在Rhel/CentOS 8/7上配置网络组合。
网络团队也可以称为NIC组合,通道绑定或者链路聚合。
合作涉及组合或者聚合网络链接,以提供具有更高吞吐量的逻辑链路或者提供冗余。
这种组合的概念被广泛称为Linux内核中实现的绑定。
Teaming概念和术语
teamd - 一个应用程序守护程序,它使用libteam库实现负载平衡和循环逻辑。
它通过UNIX域Sockets.TeamDctl侦听和通信 - 用于使用D-Bus控制Teamd的运行实例的实用程序。
它可以在运行时使用才能读取配置,链接监视器的状态,检查和更改端口,添加和删除端口的状态,并更改活动和备份状态之间的端口.Runners - 实现的单独的代码单位不同负载共享和备份方法的函数,例如循环方法。
用户指定JSON格式配置文件中的runner,然后将代码编译为实例创建实例的一个实例
可用的运行步者(团队运行模式)
广播 - 通过Portsactive-Backup传输广播数据 - 使用One端口或者链接,而其他端口被保存为Backuouroun-Robin - 数据在卷曲间平中的所有端口上传输 - 有源TX负载平衡和基于BPF的TX端口选择器LACP - 实现802.3ad链路聚合控制协议
网络组合链接观察者
ethtool - 用于观看链接状态的变化。
如果在配置文件中未指定其他链接监视程序,则这是默认值.ARP_PING - 用于使用ARP Packets.nsna_ping监视远端硬件地址的存在 - 用于监视邻居接口的存在
在Rhel/CentOS 8上配置网络组合守护进程
要安装Teamd,请在Termina中发出以下命令:
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
由于我有NetworkManager在我的RHEL/CentOS 8服务器机器中运行,因此我将使用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"}}'
我们可以使用:ActiveBackupBroadcastLacprandomRoundrobin替换LockBalance
NetworkManager将写入配置文件 /etc/sysconfig/network-scripts/ifcfg-team-team0
。
要查看分配的其他值,请运行:
$nmcli con show team0
使用下面的命令查看刚刚配置的团队接口。
$nmcli con show
分配团队接口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
向团队添加网络奴隶。
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
Teaming状态也可以使用 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删除团队
显示连接详细信息。
$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
带来团队连接。
nmcli connection down team0
删除从站。
$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.
删除团队创建。
$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"}}'
要创建要成员的端口,请在/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
启动Teaming接口。
$sudo ip link set enp7s0 down $sudo ip link set enp8s0 down $sudo ifup team0
列出Teaming端口。
$teamnl team0 ports 4: enp8s0: up 4294967295Mbit FD 3: enp7s0: up 4294967295Mbit FD