网络合作是一种以逻辑方式将 NIC 链接到一起,从而实现故障转移或更高吞吐量的方法。
合作是一种新实施,不会影响 Linux 内核中的更早绑定驱动程序;其提供备选实施。网络合 作提供更好的性能,并且由于其模块化设计,因此可扩展性更强。
Red Hat Enterprise Linux 7 使用一个小的内核驱动程序和一个用户空间守护进程 teamd 来 实施网络合作。内核高效地处理数据包,而 teamd 负责逻辑和接口处理。称为运行程序的 软件实施负载均衡和主动备份逻辑,如 roundrobin。
以下程序可供 teamd 使用:
broadcast:一个简单运行程序,传输来自每个端口的每个包
roundrobin:一个简单运行程序,以轮询方式传输来自每个端口的包
activebackup:故障转移运行程序,监视链接更改并选择活动端口进行数据传输
lacp:实施 802.3ad 链路聚合控制协议。可以使用与 loadbalance 运行程序相同的传输端口选择可能性。
所有网络交互均通过组接口(包含多个网络端口接口)完成。
使用 NetworkManger 控制合作端口接口时,特别是在查找故障时,请牢记以下几点: 1)启动网络组接口不会自动启动端口接口
2)启动端口接口始终会启动合作端口
3)停止合作接口也会停止端口接口
4)不含端口的合作接口可以启动静态 IP 连接
5)在启动 DHCP 连接时,不含端口的组将等待端口
6)当添加具有载波的端口时,等待端口且具有 DHCP 连接的组会完成
7)当添加不具有载波的端口时,等待端口且具有 DHCP 连接的组会继续等待
1)创建组接口
2)确定组接口的 IPv4 和/或 IPv6 属性
3)分配端口接口
4)启动/关闭组接口和端口接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
注:CNAME 是用于引用连接的名称,INAME 是接口名称,而 JSON 指定要使用的运行程序。 JSON 的语法如下:
‘{“runner”:{“name”:“METHOD”}}’
其中 METHOD 可选择 broadcast、roundrobin、activebackup、loadbalance 或 lacp
例:nmcli con add type team con-name team0 config ‘{“runner”:{“name”:“loadbanlance”}}’
nmcli con mod team0 ipv4.addresses 1.2.3.4/24
nmcli con mod team0 ipv4.method manual
注:必须先分配 ipv4.addresses,然后才能将 ipv4.method 设置为 manual。如果 DHCP 可用, 可以通过 DHCP 自动分配网络参数
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
注:CNAME 将为用于引用端口的名称,INAME 为现有接口的名称,TEAM 指定网络组接口的连接名称。可以显示的指定其连接名称,否则默认情况下为 team-slave-IFACE
例:nmcli con add type team-slave ifname eth1 master team0
nmcli con add type team-slave ifname eth2 master team0 con-name team0-eth2
nmcli dev dis INAME
nmcli con up CNAME
注:INAME 为要管理的组接口或端口接口的设备名称。CNAME 是该接口的连接名称。其中 CNAME 是要管理的组接口或端口接口的连接名称。
例:nmcli con up team0
nmcli dev dis eth2 6.查看组接口状态
teamdctl team0 state
注:当组接口启动时,teamdctl 命令可用于显示合作的状态。此命令的输出包括端口接口的 状态。
创建一个名为 team0 的主动备份合作接口并分配其 IPv4 设置
1)创建 team0 连接
nmcli con add type team con-name team0 ifname team0 config ‘{“runner”:{“name”:“activebackup”}}’
2)定义 team0 的 IPv4 设置,分配 192.168.0.100/24 的 IP 地址
nmcli con mod team0 ipv4.addresses ‘192.168.0.100/24’
nmcli con mod team0 ipv4.method manual
3)为 team0 分配 eno1 和 eno2 作为端口接口
nmcli con add type team-slave con-name team0-port1 ifname eno1 master team0
nmcli con add type team-slave con-name team0-port2 ifname eno2 master team0
4)在系统上检查合作接口的当前状态
teamdctl team0 state 注:注意合作接口如何立即变为活动状态(以 eno1 作为活动端口)
5).打开另一个终端通过 team0 接口对本地网关发出 ping 命令。
ping -I team0 192.168.0.254
注:让该 ping 命令一致运行
6)回到其他的 root 终端,关闭合作接口的活动接口,然后查看其对 team0 的影响
nmcli dev dis eno1
teamdctl team0 state
注:ping 会继续运行,因为 team0 切换到了其余端口
7).再次启动原始端口接口并关闭其他端口接口
nmcli con up team0-port1
nmcli dev dis eno2
teamdctl team0 state
注:注意 ping 命令如何继续访问本地网络网关
8).再次关闭端口接口,并观察它对合作接口 team0 的影响
nmcli con up team0-port2
teamdctl team0 state
注:当两个端口接口均可用时,ping 继续联系本地网络网关并且当前活动的端口接口不 会更改
1.获取合作接口的初始状态
teamdctl team0 state
2.显示组接口的文件,并记录下其如何定义要使用的运行程序以及接口的 IPv4 网络设 置
cat /etc/sysconfig/network-scripts/ifcfg-team0 显示端口接口的配置文件。特别注意 TEAM_MASTER 和 DEVICETYPE shell 变量的值 cat /etc/sysconfig/network-scripts/ifcfg-team0-port1
cat /etc/syscofnig/network-scripts/ifcfg-team0-port2
3 关闭 team0 接口并编辑配置文件以使用 roundrobin 运行程序
1)关闭 team0 接口
nmcli dev dis team0
2)编辑 team0 的配置文件并将其调整为使用 roundrobin 运行程序
vim /etc/sysconfig/network-scripts/ifcfg-team0
将 TEAM_CONFIG 中的 activebackup 更改为 roundrobin
grep runner /etc/sysconfig/network-scripts/ifcfg-team0
3)使 NetworkManger 重新加载更新后的配置
nmcli con load /etc/sysconfig/network-scripts/ifcfg-team0
4 重启 team0 接口
nmcli con up team0
检查 team0 当前状态
teamdctl team0 state
登录到另外一个终端通过 team0 接口对本地网络网关发出 ping ping -I team0 192.168.0.254
注:目标主机不可达
5 为 team0 激活其中的一个端口接口
nmcli con up team0-port1 显示合作接口的状态
teamdctl team0 state
通过 team0 接口对本地网络网关发出 ping 命令 ping -I team0 192.168.0.254
注:可以通信
6 启动 team0 其他组端口
nmcli con up team0-port2 显示合作接口的更新后状态 teamdctl team0 state
显示 team0 配置文件的配置 teamdctl team0 config dump 显示 team0 的可调整选项 teamnl team0 options
7 修改 team0 接口,以便使用 activebackup 运行程序,而非 roundrobin
1)关闭接口
nmcli dev dis team0
2)调整合作接口以使用 activebackup 运行程序
nmcli con mod team0 team.config ‘{“runner”:{“name”:“activebackup”}}’
3)检查对接口配置文件的更改
grep runner /etc/sysconfig/network-scripts/ifcfg-team0
8 重新激活合作接口及其两个端口接口
nmcli con up team0 显示器状态
teamdctl team0 state
注:端口接口未激活 激活连个端口接口并显示生成的合作接口状态 nmcli con up team0-port1
nmcli con up team0-port2
teamdctl team0 state
使用 ping 命令 ping 本地网络的网关
ping -I team0 192.168.0.254
9.使用 teamnl 显示可用于 activebackup 组设备的选项
teamnl team0 options
1 创建软件网桥 br1
nmcli con add type bridge con-name br1 ifname br1 配置接口的 IPv4 地址
nmcli con mod br1 ipv4.addresses 192.168.0.100/24 nmcli con mod br1 ipv4.method manual
2.将 eno1 接口连接到 br1 软件网桥
nmcli con add type bridge-slave con-name br1-port0 ifname eno1 master br1 查看 NetworkManger 创建网桥及 eno1 的配置文件
cat /etc/sysconfig/network-scripts/ifcfg-br1
cat /etc/sysconfig/network-scripts/ifcfg-br1-port0
3.显示网络接口的连接状态
ip link
4.显示软件网桥相关信息
brctl show
5.对使用软件网桥的本地网络网关发出 ping 命令
ping -I br1 192.168.0.254