在 Rocky Linux 8|AlmaLinux 8 | 上配置网络网卡分组
网络NIC组合可以描述为将多个网络链路聚合成单个逻辑链路。这样做主要是为了提高冗余和带宽。当一个物理链路断开时,创建的团队界面会提供备用链路,从而提供与服务器的不间断连接。
在我们继续之前,您可能需要了解几个概念:
- teamd – 使用 libteam 库与团队通信的 nic 分组守护进程通过 Linux 内核的设备。
- teamdctl – 一种允许控制 teamd 实例的实用程序。使用它,您可以检查和更改端口状态,以及在备份和活动状态之间切换。
运行程序 – 以 JSON 格式编写的单元,用于实现各种 NIC 分组概念。有多种跑步者(团队跑步模式),包括:
- 广播 – 此处,数据在所有接口上传输。
- round-robin – 数据依次通过所有端口传输
- 主动备份 – 一次使用一个端口或链路,而其他端口或链路保留作为备份
- lacp – 该协议实现802.3ad链路聚合控制协议
- 负载平衡 – 具有主动 Tx 负载平衡和基于 BPF 的 Tx 端口选择器。流量通过所有 NIC 传输。
本指南详细说明了如何在 Rocky Linux 8 上配置网络 NIC 分组 |阿尔玛Linux 8。
设置 先决条件
对于本指南,您需要以下内容:
- 具有 sudo 访问权限的用户。
- 连接到您的系统的两个/多个接口适配器。
第 1 步 – 在 Rocky Linux 8 上安装 Teaming Daemon阿尔玛 Linux 8
分组守护进程在默认的 Rocky Linux 8 中可用| Alma Linux 8 存储库可以按如下方式安装。
sudo dnf -y install teamd
安装后,检查安装的版本。
$ rpm -qi teamd
Name : teamd
Version : 1.31
Release : 2.el8
Architecture: x86_64
Install Date: Wed 29 Sep 2021 04:01:14 AM EDT
Group : System Environment/Daemons
Size : 282950
License : LGPLv2+
Signature : RSA/SHA256, Sun 11 Apr 2021 11:14:13 PM EDT, Key ID 15af5dac6d745a60
Source RPM : libteam-1.31-2.el8.src.rpm
Build Date : Sun 14 Mar 2021 06:12:27 PM EDT
Build Host : ord1-prod-x86build003.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager : [email
Vendor : Rocky
URL : http://www.libteam.org
Summary : Team network device control daemon
Description :
The teamd package contains team network device control daemon.
步骤 2 – 在 Rocky Linux 8 上配置 NIC 分组 |阿尔玛 Linux 8
在本指南中,我们将介绍两种在 Rocky Linux 8 上配置 NIC 分组的方法 | Alma Linux 8 即:
- 使用 NMCLI
- 使用 Ansible 系统角色
- 使用 nmstatectl
方法 1 – 在 Rocky Linux 8 上配置 NIC 分组|使用 NMCLI 的 Alma Linux 8
可以使用网络管理器的 nmcli 工具来配置绑定。首先,检查系统上的网络接口。
nmcli device status
示例输出:
从上面的输出来看,有两个接口设备 enp1s0
和 enp9s0
连接到我的系统。您还可以使用以下命令收集更多信息。
nmcli connection show
示例输出:
使用 UUID 断开两个设备的连接,如下所示。
sudo nmcli connection delete 93a375cc-3c29-4a52-9fb9-0f6940ea4c2a
sudo nmcli connection delete 6c574fa3-98eb-40f1-a463-6b9271397d55
删除后,应按如下方式断开设备连接。
现在让我们创建一个名为 team1 的团队,其中首选运行者为 active-backup,其中一次使用一个端口或链接,同时其他的则保留作为备份。您还可以使用广播、lacp、循环赛和随机赛跑者中的任何一种。
sudo nmcli connection add type team con-name team1 ifname team1 config '{"runner": {"name": "activebackup"}}'
显示创建的团队。
$ nmcli connection show team1
connection.id: team1
connection.uuid: dad0b991-fd00-45ca-9e3b-8f7843498f47
connection.stable-id: --
connection.type: team
connection.interface-name: team1
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
......
现在为新团队设置 IP 地址、DNS 和自动连接。
sudo nmcli con mod team1 ipv4.addresses 192.168.205.100/24
sudo nmcli con mod team1 ipv4.gateway 192.168.205.1
sudo nmcli con mod team1 ipv4.dns 8.8.8.8
sudo nmcli con mod team1 ipv4.method manual
sudo nmcli con mod team1 connection.autoconnect yes
现在添加从属网络并将它们链接到团队。
sudo nmcli con add type team-slave con-name team1-slave0 ifname enp1s0 master team1
sudo nmcli con add type team-slave con-name team1-slave1 ifname enp9s0 master team1
添加后,检查链接的状态。
$ nmcli connection show
NAME UUID TYPE DEVICE
enp10so 77ae630c-8940-4b6d-9ae2-09f358296b41 ethernet enp10s0
team1 dad0b991-fd00-45ca-9e3b-8f7843498f47 team team1
virbr0 2219ff25-c5f7-486c-9d2d-7a585be22cfe bridge virbr0
team1-slave0 9cdf0f6f-d6d4-45e5-bb8a-8ff7365fcd7a ethernet enp1s0
team1-slave1 67a57ddf-4595-4be2-b6ae-f5b481083d47 ethernet enp9s0
要应用所做的更改,请重新启动团队。
$ sudo nmcli connection down team1 && sudo nmcli connection up team1
Connection 'team1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
查看团队界面的状态。
ip addr show dev team1
输出 :
您还可以使用teamdctl
工具查看更多信息。
sudo teamdctl team1 state
示例输出:
测试团队功能。
使用主动备份运行程序后,我们想看看它是否正常工作。因此,我们将尝试关闭活动端口enp1s0
sudo nmcli device disconnect enp1s0
检查团队的状态。
sudo teamdctl team1 state
示例输出:
从上面的输出中,我们看到活动端口切换到 enp9s0
,这证明活动备份运行程序工作正常。
使用 nmcli 删除团队
如果您在某个时候想要删除团队,请不用担心。这非常简单,可以使用 nmcli 实用程序通过以下步骤来完成:
显示连接详细信息。
$ nmcli connection show
NAME UUID TYPE DEVICE
enp10so 77ae630c-8940-4b6d-9ae2-09f358296b41 ethernet enp10s0
team1 dad0b991-fd00-45ca-9e3b-8f7843498f47 team team1
virbr0 2219ff25-c5f7-486c-9d2d-7a585be22cfe bridge virbr0
team1-slave1 67a57ddf-4595-4be2-b6ae-f5b481083d47 ethernet enp9s0
team1-slave0 9cdf0f6f-d6d4-45e5-bb8a-8ff7365fcd7a ethernet --
停用您要删除的团队。
sudo nmcli connection down team1
现在删除团队中的奴隶。
$ sudo nmcli connection delete team1-slave0 team1-slave1
Connection 'team1-slave0' (9cdf0f6f-d6d4-45e5-bb8a-8ff7365fcd7a) successfully deleted.
Connection 'team1-slave1' (67a57ddf-4595-4be2-b6ae-f5b481083d47) successfully deleted.
现在删除团队:
$ sudo nmcli connection delete team1
Connection 'team1' (dad0b991-fd00-45ca-9e3b-8f7843498f47) successfully deleted.
验证团队是否已成功删除。
$ nmcli connection show
NAME UUID TYPE DEVICE
enp10so 77ae630c-8940-4b6d-9ae2-09f358296b41 ethernet enp10s0
virbr0 2219ff25-c5f7-486c-9d2d-7a585be22cfe bridge virbr0
方法 2 – 在 Rocky Linux 8 上创建网络团队| Alma Linux 8 使用Ansible系统角色。
这是使用 ansible 创建网络绑定的另一种方法。我假设您的系统上已经安装并配置了 Ansible。
安装 rhel-system-roles 软件包。
sudo yum install rhel-system-roles
在 Inventory 文件中添加要在其上配置团队的主机。
$ sudo vi /etc/ansible/hosts
192.168.205.2
您可能还需要将此托管主机的 SSH 密钥添加到您的控制节点。
现在为网络团队创建 playbook YAML,如下所示。
vi ~/bond-ethernet.yml
在该文件中,添加以下行。
---
- name: Configure a network bond that uses two Ethernet ports
hosts: 192.168.205.2
become: true
tasks:
- include_role:
name: rhel-system-roles.network
vars:
network_connections:
# Define the bond profile
- name: bond0
type: bond
interface_name: bond0
ip:
address:
- "192.168.205.100/24"
gateway4: 192.168.205.1
dns:
- 8.8.8.8
dns_search:
- example.com
bond:
mode: active-backup
state: up
# Add an Ethernet profile to the bond
- name: bond0-port1
interface_name: enp9s0
type: ethernet
controller: bond0
state: up
# Add a second Ethernet profile to the bond
- name: bond0-port2
interface_name: enp10s0
type: ethernet
controller: bond0
state: up
在这里,我使用两个设备enp9s0和enp10s0配置了一个网络团队,设置了绑定的IP地址作为 192.168.205.100 与网关 192.168.205.1。
现在设置了正确的详细信息,以托管主机的 root 用户身份运行 playbook。
ansible-playbook -u root ~/bond-ethernet.yml
示例输出:
验证债券状态。
sudo cat /proc/net/bonding/bond0
示例输出:
方法 3 – 在 Rocky Linux 8 上创建网络团队| Alma Linux 8 使用 nmstatectl
使用此方法,请确保安装 nmstate 软件包。
sudo yum install nmstate
然后创建一个 YAML 文件,如下所示。
vi ~/create-bond.yml
在该文件中,按如下所示设置团队首选项。
---
interfaces:
- name: bond0
type: bond
state: up
ipv4:
enabled: true
address:
- ip: 192.168.205.100
prefix-length: 24
dhcp: false
link-aggregation:
mode: active-backup
port:
- enp9s0
- enp10s0
- name: enp9s0
type: ethernet
state: up
- name: enp10s0
type: ethernet
state: up
routes:
config:
- destination: 0.0.0.0/0
next-hop-address: 192.168.205.1
next-hop-interface: bond0
dns-resolver:
config:
search:
- example.com
server:
- 8.8.8.8
在文件中,替换:
- ip: 192.168.205.100 具有首选网络绑定
- 下一跳地址:192.168.205.1 使用 Pv4 默认网关
保存文件并将设置应用到您的系统。
sudo nmstatectl apply ~/create-bond.yml
示例输出:
验证债券是否存在。
$ sudo nmcli device status
DEVICE TYPE STATE CONNECTION
enp1s0 ethernet connected enp1s0
bond0 bond connected bond0
virbr0 bridge connected (externally) virbr0
enp10s0 ethernet connected enp10s0
enp9s0 ethernet connected enp9s0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
您还可以查看有关债券的详细信息。
sudo nmcli connection show bond0
输出 :
结论
这就对了!
我们已经在 Rocky Linux 8 上成功配置了网络网卡分组|使用NMCLI、ansible系统角色和nmstatectl的Alma Linux 8。我希望这对您来说很重要。
查看更多。
- 在 Debian 上配置网络 NIC 分组
- 在 Rocky Linux 8 上安装 Open vSwitch|AlmaLinux 8
- 在 Ubuntu/Debian 上安装和使用 NetworkManager (NMCLI)
- 如何在 KVM 虚拟机上使用 Open vSwitch Bridge