在CentOS/Rhel 8/7上配置网络组合

时间:2020-02-23 14:30:27  来源:igfitidea点击:

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

对于我的设置,我将使用两个网络设备 - 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"}}'

我们可以使用: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