Linux服务管理(二) 配置Linux服务器链路聚合
1 | 作者:李晓辉 |
章节目标
使用网络合作提供链路冗余性或更高的吞吐量。
管理网络组接口。
使用 Ansible 自动创建和配置网络组。
配置网络合作
网络合作概念简介
网络合作将网络流量分布于多个网络接口,网络合作将多个网络接口卡在逻辑上链接在一起,以实现故障转移,或者支持更高的吞吐量。
称为运行程序的软件实施负载均衡和主动备份逻辑,下表总结了每个运行程序的行为:
Teamd 运行程序
运行程序 | 描述 |
---|---|
activebackup | 故障转移运行程序,可监视链路变更并选择活动端口进行数据传输。 |
roundrobin | 此运行程序会以轮循方式传输来自每个端口的数据包。 |
broadcast | 此运行程序可传输来自所有端口的每个数据包。 |
loadbalance | 此运行程序监控流量并使用哈希函数以尝试在为数据包传输选择端口时达到完美均衡。 |
lacp | 此运行程序实施 802.3ad 链路聚合控制协议 (LACP)。它具有与 loadbalance 运行程序相同的传输端口选择可能性。 |
random | 此运行程序在随机选择的端口上传输数据包。 |
所有网络交互都通过组接口(或主接口)完成。组接口由多个端口接口(端口或从接口)组成,它们是组合到组中的网络接口。
使用 NetworkManager 控制组接口时,或对其进行故障排除时,您应牢记以下几点:
启动组接口不会自动启动其端口接口。
启动端口接口始终会启动组接口。
停止组接口也会停止端口接口。
不含端口的组接口可以启动静态 IP 连接。
在启动 DHCP 连接时,不含端口的组接口将等待端口。
如果组接口具有 DHCP 连接且在等待端口,则在添加具有载波信号的端口时它会完成激活。
如果组接口具有 DHCP 连接且在等待端口,则在添加不具有载波信号的端口时它会继续等待。
配置网络组
使用 nmcli
命令创建和管理组和端口接口。以下四个步骤用于创建和激活组接口:
创建组接口。
分配组接口的 IPv4 和/或 IPv6 属性。
创建端口接口。
启动或关闭组接口和端口接口。
创建组接口
创建一个名为 team0
的主被模式合作接口,并为其分配地址 192.168.0.100/24
。将网络接口 eth1
和 eth2
分配为端口接口。
- 使用
nmcli
命令创建team0
连接。
1 | [root@servera ~]# nmcli con add type team con-name team0 ifname team0 \ |
- 将地址
192.168.0.100/24
分配给team0
连接。
1 | [root@servera ~]# nmcli con mod team0 ipv4.addresses 192.168.0.100/24 |
- 将
eth1
andeth2
分配为team0
连接的端口接口。
1 | [root@servera ~]# nmcli con add type ethernet slave-type team \ |
- 激活
team0
连接和两个从端口
1 | [root@servera ~]# nmcli con up team0 |
- 显示合作接口的状态。
1 | [root@servera ~]# teamdctl team0 state |
验证网络通信
通过 team0 接口对 192.168.0.0/24 网络上的网络网关 192.168.0.254 进行 Ping 操作
1 | [root@servera ~]# ping -I team0 -c 4 192.168.0.254 |
使用 tcpdump 命令来监控活动的接口
1 | [root@servera ~]# tcpdump -i eth1 |
管理网络合作
网络合作配置文件
NetworkManager 在 /etc/sysconfig/network-scripts 目录中为网络合作创建配置文件
1 | [root@servera ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0 |
定义辅助端口
1 | [root@servera ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-port1 |
设置和调整组配置
nmcli con mod 命令将分配不同的运行程序参数。
1 | [root@servera ~]# nmcli con mod team0 team.runner activebackup |
故障排除
显示 team0 组接口的端口接口:
1 | [root@servera ~]# teamnl team0 ports |
显示 team0 的当前活动端口
1 | [root@servera ~]# teamnl team0 getoption activeport |
更改 team0 的活动端口
1 | [root@servera ~]# teamdctl team0 state item set runner.active_port eth2 |
显示 team0 的当前状态
1 | [root@servera ~]# teamdctl team0 state |
显示 team0 的当前 JSON 配置
1 | [root@servera ~]# teamdctl team0 config dump |
自动化网络合作
安装系统角色软件包
1 | [root@servera ~]# yum install rhel-system-roles -y |
创建网络组
定义一个 network_connections 变量,用于创建名为 team0 的组配置集,其接口名为 team0。为该团队分配静态 IP 地址 192.168.0.100/24,并禁用 DHCPv4 和 DHCPv6
1 |
|
创建从接口
第一个从接口应命名为 team0-port1
,并绑定到 eth1
以太网接口。第二个从接口应命名为 team0-port2
,并绑定到 eth2
以太网接口。
1 |
|
检查 playbook.yml
文件中的语法错误,然后运行该 playbook。
1 | ansible-playbook --syntax-check playbook.yml |
调整运行程序
1 |
|