鏈路聚合
鏈路聚合:本實驗可以自己通過給虛擬機添加兩張網卡自行實驗,不需要實驗腳本,自己配置網卡接口可能會是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=... |