在CentOS/RHEL 8/7上配置网络分组

时间:2020-02-23 14:38:21  来源:igfitidea点击:

问题:如何在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

在我的设置中,我将使用两个网络设备– enp7s0enp8s0
在开始配置之前,请删除与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添加端口时,等待端口的连接会继续等待。