Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli
多網(wǎng)卡綁定
“Bonding” 和 “nmcli的網(wǎng)絡(luò)組Network Teaming”
二者實(shí)現(xiàn)的功能一樣,但從某種角度,網(wǎng)絡(luò)組要比Bonding的技術(shù)要好
網(wǎng)絡(luò)接口配置:Bonding
將多塊網(wǎng)卡綁定同一IP地址對(duì)外提供服務(wù),可以實(shí)現(xiàn)高可用或者負(fù)載均衡。直接給兩塊網(wǎng)卡設(shè)置同一IP地址是不可以的。通過(guò)bonding,虛擬一塊網(wǎng)卡對(duì)外提供連接,物理網(wǎng)卡被修改為相同的MAC地址。
一。Bonding工作模式
多網(wǎng)卡綁定有很多模式,如下:
Mode 0 (balance-rr):
輪轉(zhuǎn)(Round-robin)策略:從頭到尾順序的在每一個(gè)slave接口上面發(fā)送數(shù)據(jù)包。本模式提供負(fù)載均衡和容錯(cuò)的能力。如第一個(gè)數(shù)據(jù)包用網(wǎng)卡1轉(zhuǎn)發(fā),第二個(gè)數(shù)據(jù)包由網(wǎng)卡2轉(zhuǎn)發(fā)。
Mode 1 (active-backup)
活動(dòng)-備份(主備)策略:只有一個(gè)slave被激活,當(dāng)且僅當(dāng)活動(dòng)的slave接口失敗時(shí)才會(huì)激活其他slave.為了避免交換機(jī)發(fā)生混亂,此時(shí)綁定的MAC地址只有一個(gè)外部端口上可見(jiàn)。即,平時(shí)只有一個(gè)網(wǎng)卡工作,當(dāng)網(wǎng)卡壞掉會(huì)自動(dòng)啟動(dòng)第二個(gè)網(wǎng)卡工作。
Mode 3 (broadcast)
廣播策略:在所有的slave接口上傳送所有的報(bào)文,提供容錯(cuò)能力。即在所有的網(wǎng)卡上傳輸一樣的數(shù)據(jù)。
還有其它的模式:
active-backup、balance-tlb 和 balance-alb 模式不需要交換機(jī)的任何特殊配置。其他綁定模式需要配置交換機(jī)以便整合鏈接。如:Cisco 交換機(jī)需要在模式Mode 0、Mode 2 和Mode 3 中使用 EtherChannel,但在模式Mode 4中需要 LACP和EtherChannel
二。Bonding配置
1.bonding設(shè)備的配置文件
第一步:創(chuàng)建bonding設(shè)備的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
推薦的配置的項(xiàng)有:
DEVICE=設(shè)備名稱,如bond0
BOOTPROTO=協(xié)議,如none
BONDING_OPTS=指定工作模式,如 “miimon=100 mode=0”表示工作模式"Mode 0",且沒(méi)100ms監(jiān)測(cè)一次鏈路連接狀態(tài)。
說(shuō)明:
miimon 是用來(lái)進(jìn)行鏈路監(jiān)測(cè)的。如果miimon=100,那么系統(tǒng)每100ms 監(jiān)測(cè)一次鏈路連接狀態(tài),如果有一條線路不通就轉(zhuǎn)入另一條線路
第二步:在要加入bonding的網(wǎng)卡,的配置文件里寫入bonding設(shè)備的項(xiàng)。如下:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0《======
SLAVE=yes 《======
USERCTL=no
寫入上面兩行后,網(wǎng)卡就不可以單獨(dú)工作了,而是成為bonding的附屬設(shè)備工作??膳渲枚鄠€(gè)網(wǎng)卡配置文件加入bonding設(shè)備,且binding所屬的網(wǎng)卡,顯示的MAC地址都一樣。
2.查看bond0的狀態(tài)
查看bond0的狀態(tài):/proc/net/bonding/bond0
查看當(dāng)前有幾個(gè)bonding:/sys/class/net/bonding_masters
3.刪除bond0
第一步:禁用bonding
ifconfig bond0 down
第二步:卸載bonding驅(qū)動(dòng)模塊
rmmod bonding
第三步:刪除bonding的配置文件及所屬網(wǎng)卡配置文件里bonding的項(xiàng)
第四步:重啟網(wǎng)絡(luò)服務(wù)
4.bonding的詳細(xì)幫助
/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt
5.實(shí)驗(yàn)Mond 1 活動(dòng)-備份(主備)策略
1.確保你有兩個(gè)網(wǎng)卡,并且都在一個(gè)網(wǎng)絡(luò),如果用虛擬機(jī)做實(shí)驗(yàn),要確保兩個(gè)網(wǎng)卡是一個(gè)模式,如“僅主機(jī)模式”。
2.創(chuàng)建bonding設(shè)備的配置文件
在/etc/sysconfig/network-scripts目錄創(chuàng)建文件ifcfg-bond0
DEVICE=bond0 \設(shè)備名稱
BOOTPROTO=none \協(xié)議
IPADDR=192.168.36.6 \bonding的ip地址
PREFIX=24 \子網(wǎng)掩碼
GATEWAY=192.168.36.254 \網(wǎng)關(guān)
DNS1=192.168.36.6 \DNS
BONDING_OPTS=miimon=100 mode=1
3.在網(wǎng)卡的配置文件里加入bonding的項(xiàng)
進(jìn)入/etc/sysconfig/network-scripts/ifcfg-ethXX
添加行:
MASTER=bond0
SLAVE=yes
添加后,文件原來(lái)指定的靜態(tài)或動(dòng)態(tài)地址就會(huì)失效,生效的是bonding地址
4.確保NetworkManager服務(wù)關(guān)閉,并重啟network服務(wù)
Centos6:
service NetworkManager status 查看服務(wù)狀態(tài)
chkconfig NetworkManager off \關(guān)閉自動(dòng)啟動(dòng)
service NetworkManager stop \關(guān)閉服務(wù)
service network restart \重啟網(wǎng)絡(luò)服務(wù)
Centos7:
systemctl status NetworkManager 查看服務(wù)狀態(tài)
systemctl stop NetworkManager 臨時(shí)停止
systemctl disable NetworkManager 下次開(kāi)機(jī)即停止服務(wù)
systemctl restart network \重啟網(wǎng)絡(luò)服務(wù)
5.查看bonding:“ifconfig”
6.檢測(cè)
停用一個(gè)網(wǎng)卡,在ping“bond0”地址,能ping通證明binding的"Mode 1"模式生效了。
7.查看binding設(shè)備中,“Mode 1”模式下,binding所屬的哪個(gè)網(wǎng)卡在活動(dòng):
方法一:使用watch -n1 netstat -i查看,不明顯可以用另一臺(tái)電腦ping“binding”的IP地址
方法二:查看/proc/net/bonding/bond0文件
網(wǎng)絡(luò)組Network Teaming
概念:
網(wǎng)絡(luò)組:是將多個(gè)網(wǎng)卡聚合在一起方法,從而實(shí)現(xiàn)冗錯(cuò)和提高吞吐量
網(wǎng)絡(luò)組不同于舊版中bonding技術(shù),提供更好的性能和擴(kuò)展性
網(wǎng)絡(luò)組由內(nèi)核驅(qū)動(dòng)和teamd守護(hù)進(jìn)程實(shí)現(xiàn).
多種方式(模式)runner:
broadcast(廣播策略)《===》對(duì)應(yīng)bonding模式mode 3
roundrobin(輪轉(zhuǎn)策略)《===》對(duì)應(yīng)bonding模式mode 0
activebackup(活動(dòng)-備份(主備)策略)《===》對(duì)應(yīng)bonding模式mode 1
loadbalance(限定流量)《===》對(duì)應(yīng)bonding模式mode 2
lacp(implements the 802.3ad Link Aggregation Control Protocol:實(shí)現(xiàn)802.3ad鏈路聚合控制協(xié)議)《===》對(duì)應(yīng)bonding模式mode 4
參考鏈接:https://www.cnblogs.com/lqynkdcwy/p/9548668.html
注意事項(xiàng):
啟動(dòng)網(wǎng)絡(luò)組接口不會(huì)自動(dòng)啟動(dòng)網(wǎng)絡(luò)組中的port接口
啟動(dòng)網(wǎng)絡(luò)組接口中的port接口總會(huì)自動(dòng)啟動(dòng)網(wǎng)絡(luò)組接口
禁用網(wǎng)絡(luò)組接口會(huì)自動(dòng)禁用網(wǎng)絡(luò)組中的port接口
沒(méi)有port接口的網(wǎng)絡(luò)組接口可以啟動(dòng)靜態(tài)IP連接
啟用DHCP連接時(shí),沒(méi)有port接口的網(wǎng)絡(luò)組會(huì)等待port接口的加入
創(chuàng)建網(wǎng)絡(luò)組
1.創(chuàng)建網(wǎng)絡(luò)組接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME表示連接名
INAME表示接口名
JSON指定runner方式(模式),格式如下:
'{"runner": {"name": "METHOD"}}',其中METHOD 可以是:
broadcast
roundrobin
activebackup
loadbalance
lacp
2.創(chuàng)建port接口
`nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME 連接名
INAME 網(wǎng)絡(luò)接口名
TEAM 網(wǎng)絡(luò)組接口名
連接名若不指定,默認(rèn)為team-slave-IFACE
nmcli dev dis INAME
nmcli con up CNAME
INAME 設(shè)備名 CNAME 網(wǎng)絡(luò)組接口名或port接口
3.新網(wǎng)絡(luò)組的配置文件
示例
網(wǎng)絡(luò)組的配置文件/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.16.0.100
PREFIX0=24
NAME=team0
ONBOOT=yes
網(wǎng)絡(luò)組所屬網(wǎng)卡的配置文件/etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes
4.創(chuàng)建網(wǎng)絡(luò)組示例
示例1:
nmcli con add type team con-name myteam0 ifname team0 config
'{“runner”: {“name”: “l(fā)oadbalance”}}' ipv4.addresses
192.168.1.100/24 ipv4.method manual
示例2:
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
示例3:
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
示例4:
nmcli con up myteam0
示例5:
nmcli con up team0-eth1
示例6:
nmcli con up team0-eth2
示例7:查看tean0狀態(tài)
teamdctl team0 state
示例8:
nmcli dev dis eth1
5.實(shí)驗(yàn):創(chuàng)建、刪除網(wǎng)絡(luò)組
1)創(chuàng)建網(wǎng)絡(luò)組team0
查看網(wǎng)絡(luò)連接
ip link
創(chuàng)建網(wǎng)絡(luò)組team0,名字為myteam0,模式是主備模式
nmcli con add type team con-name myteam0 ifname team0 config'{"runner": {"name": "activebackup"}}'
給網(wǎng)絡(luò)組添加IP地址
nmcli con mod team0 ipv4.addresses '192.168.0.100/24'
手工指定
nmcli con mod team0 ipv4.method manual
將物理網(wǎng)卡eth1加入網(wǎng)絡(luò)組etam0
nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0
將物理網(wǎng)卡eth2加入網(wǎng)絡(luò)組etam0
nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0
將網(wǎng)絡(luò)組關(guān)聯(lián)的兩個(gè)物理網(wǎng)卡啟用
nmcli con up team0-port1
nmcli con up team0-port2
查看網(wǎng)絡(luò)組狀態(tài)
teamdctl team0 state
nmcli connection
2.刪除網(wǎng)絡(luò)組team0
首先禁用網(wǎng)絡(luò)組team0
nmcli connection down team0
查看網(wǎng)絡(luò)組
teamdctl team0 state
nmcli connection show
刪除網(wǎng)絡(luò)組的網(wǎng)卡設(shè)備
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
在查看網(wǎng)絡(luò)組
查看網(wǎng)絡(luò)組
teamdctl team0 state
nmcli connection show
刪除網(wǎng)絡(luò)組
示例:刪除網(wǎng)絡(luò)組team0
首先禁用網(wǎng)絡(luò)組team0
nmcli connection down team0
查看網(wǎng)絡(luò)組
teamdctl team0 state
nmcli connection show
刪除網(wǎng)絡(luò)組的網(wǎng)卡設(shè)備
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
在查看網(wǎng)絡(luò)組
查看網(wǎng)絡(luò)組
teamdctl team0 state
nmcli connection show
`
轉(zhuǎn)載于:https://blog.51cto.com/kingding/2376950
總結(jié)
以上是生活随笔為你收集整理的Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android中如何给应用程序签名
- 下一篇: linux关机命令