nmcli创建网卡team
网卡team简介
Teaming 是一种较新的高级网络绑定技术,主要面向 Red Hat Enterprise Linux 和 CentOS 等企业级发行版,提供更灵活、更高级的网络绑定功能。
Team 是 Red Hat 公司开发的一种用户空间工具,被包含在 RHEL 中,并得到了 Red Hat 的支持和维护。Team 支持多种绑定类型,包括 LACP、Round-Robin、Active Backup、Load Balance 和 Broadcast 等,可以根据不同的网络需求进行选择。
安装teamd
# 安装teamd
dnf install -y teamd
创建一个 team0 的 Team 接口
在 RHEL 8 中,Team 接口支持多种 Runner 类型,不同的 Runner 类型提供了不同的负载均衡和故障转移机制。
以下是 Team 支持的 Runner 类型:
1.主备模式
activebackup:默认的 Runner 类型,也是最简单的一种。
在 activebackup 模式下,Team 只使用一个成员接口来传输数据,其他成员接口处于备用状态,只有在主接口故障时才会被激活。这种模式适用于需要故障恢复能力的情况。
# 创建名为team0的Team接口,并且使用activebackup这个Runner来管理接口成员之间的负载均衡和故障转移。
nmcli c add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
# 该命令会返回一个 JSON 格式的配置文件,其中包含了 Team 接口的详细配置信息。
2.轮训模式(宽带叠加)
roundrobin:在 roundrobin 模式下,Team 将数据包依次发送给所有成员接口,从而实现负载均衡。这种模式适用于需要增加带宽的情况。
# 创建轮训模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "roundrobin"}}'
3.负载均衡模式
loadbalance:在 loadbalance 模式下,Team 使用成员接口的 MAC 地址和 IP 地址来计算一个哈希值,并根据哈希值将数据包发送到相应的成员接口上。这种模式适用于需要增加带宽和负载均衡的情况。
# 创建负载均衡模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "loadbalance"}}'
4.广播模式
broadcast:在 broadcast 模式下,Team 将数据包广播到所有成员接口上,从而实现广播功能。这种模式适用于需要广播功能的情况。
# 创建广播模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "broadcast"}}'
5.LACP模式(链路聚合控制协议)
lacp:在 lacp 模式下,Team 使用 Link Aggregation Control Protocol(LACP)协议来协调成员接口之间的连接状态,从而实现负载均衡和故障转移功能。这种模式适用于需要实现 IEEE 802.3ad 标准的链路聚合功能的情况。
# 创建LACP模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "lacp"}}'
6.增强轮询模式(轮询+哈希)
roundrobin+:在 roundrobin+ 模式下,Team 使用 roundrobin 模式来实现负载均衡,并且使用哈希算法来计算数据包的哈希值,从而将数据包发送到不同的成员接口上。这种模式适用于需要增加带宽和负载均衡的情况。
# 创建增强轮询模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "roundrobin+"}}'
7.随机模式
random:在 random 模式下,Team 随机选择一个成员接口来传输数据包。这种模式适用于需要增加带宽和负载均衡的情况。
# 创建随机模式的team接口
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "random"}}'
向 team0 接口添加成员接口
这些成员接口
将会被teamd进程
使用来实现负载均衡
和故障转移
的功能。
# 向team0接口添加成员接口eth0,命名为team0-port0
nmcli con add type team-slave con-name team0-port0 ifname eth0 master team0
# 向team0接口添加成员接口eth1,命名为team0-port1
nmcli con add type team-slave con-name team0-port1 ifname eth1 master team0
激活配置
# 激活team0配置
nmcli con up team0
# 验证配置
nmcli con show team0