Linux 链路聚合
链路聚合
链路聚合:本实验可以自己通过给虚拟机添加两张网卡自行实验,不需要实验脚本,自己配置网卡接口可能会是eth1和eth2
题目要求:
- 此链路使用借口eno1和eno2
- 此链路在一个接口失效时仍能工作
- 此链路使用192.168.0.100/255.255.255.0
- 此链路在系统重启之后保持正常状态
1、概念
rhce7 使用teaming实现聚合链路,能够提供网卡绑定之后的网络吞吐性能,并且提供网卡的故障切换处理能力。
Team是基于一个小型内核驱动实现聚合链路,在用户层提供teamd命令实现链路管理。teamd可以实现以下模式的聚合链路:
broadcast
roundrobin 轮询模式
activebackup 高可用模式
loadbalance 负载均衡
lacp 需要交换机支持lacp协议
2、执行实验脚本
执行完成之后发现多了两块网卡,eno1 eno2
[root@server0 ~]# lab teambridge setup Setting up for link aggregation lab ... SUCCESS [root@server0 ~]# nmcli device DEVICE TYPE STATE CONNECTION eth0 ethernet connected eth0 eno1 ethernet disconnected -- eno2 ethernet disconnected -- lo loopback unmanaged --
3、配置
[root@server0 ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}} 命令解析:创建一个类型为team的接口,接口的配置文件为team0,产生的设备名叫team0,使用activebackup模式工作 [root@server0 ~]# nmcli connection modify team0 ipv4.addresses "192.168.0.100/24" ipv4.method manual 命令解析:为team0网卡配置ip,并且将ip获取方式改为静态(manual) [root@server0 ~]# nmcli connection add type team-slave con-name team0-port1 ifname eno1 master team0 命令解析:建立类型为team-slave的子接口,子接口配置文件为team0-port1,绑定到eno1网卡,主节点为team0 [root@server0 ~]# nmcli connection add type team-slave con-name team0-port2 ifname eno2 master team0
查看team0的状态
[root@server0 ~]# teamdctl team0 state setup: runner: activebackup --->表示当前 运行的模式 ports: eno1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up eno2 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: active port: eno1 --->表示当前使用eno1来收发数据,当eno1断掉之后,切换到eno2继续收发数据。
测试
断掉eno1
[root@server0 ~]# nmcli device disconnect eno1 [root@server0 ~]# teamdctl team0 state setup: runner: activebackup ports: eno2 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: active port: eno2 --->可以看到eno1已经不见了,所以用eno2来收发数据
这时启动eno1,team0不会切换到eno1,会继续使用eno2收发数据,直到eno2断掉,才会切换到eno1继续工作
4、管理teaming接口配置文件
(1)查看team0配置文件
[root@server0 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0 DEVICE=team0 TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}" DEVICETYPE=Team BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=team0 UUID=518c7338-1554-4aa7-8171-6bdca5e85366 ONBOOT=yes IPADDR0=192.168.0.100 PREFIX0=24 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
(2)修改team0的配置内容
将当前正在使用的team配置dump下来保存到/tmp/team0.conf [root@server0 ~]# teamdctl team0 config dump >> /tmp/team0.conf [root@server0 ~]# cat /tmp/team0.conf { "device": "team0", "mcast_rejoin": { "count": 1 }, "notify_peers": { "count": 1 }, "ports": { "eno1": { "link_watch": { "name": "ethtool" } }, "eno2": { "link_watch": { "name": "ethtool" } } }, "runner": { "name": "activebackup" } }
(3)将配置配置文件中的activebackup修改为loadbalance(负载均衡模式)
[root@server0 ~]# vim /tmp/team0.conf ... "name": "loadbalance" ...
(4)将修改后的文件重新配置到team0
[root@server0 ~]# nmcli connection modify team0 team.config /tmp/team0.conf
(5)修改之后down掉team0,然后重新up
[root@server0 ~]# nmcli connection down team0
[root@server0 ~]# nmcli connection up team0
(6)还要将team0-port1和team0-port2重新加载
[root@server0 ~]# nmcli connection up team0-port1
[root@server0 ~]# nmcli connection up team0-port2
(7)可以看到模式已经修改成功
[root@server0 ~]# teamdctl team0 state
setup:
runner: loadbalance
ports:
eno1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
eno2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
本实验到此结束
如果有什么建议或者不明白的地方,欢迎评论或者私信我,看到了第一时间回复。
本人Linux菜鸟,还望各位Linux大佬多多指教。
附加:nmcli配置网络参数和网络配置文件ifcfg-网卡名对应关系表
nmcli con mod | ifcfg-*文件 |
---|---|
ipv4.method manual |
BOOTRROTO=none |
ipv4.method auto |
BOOTRROTO=dhcp |
ipv4.address "192.168.0.10/24 192.168.0.1" |
IPAEDDR=192.168.0.10 PREFIX=24 GATEWAY=192.168.0.1 |
ipv4.dns 8.8.8.8 |
DNS=8.8.8.8 |
ipv4.dns-search example.com | |
ipv4.ignore-auto-dns true |
PEERNDS=no |
connection.autoconnect yes |
ONBOOT=yes |
connection.id eth0 |
NAME=eth0 |
connection.interface-name eth0 |
DEVICE=eth0 |
802-3-ethernet.mac-address... |
HWADDR=... |