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

DOMAIN=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=...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM