【干货】Linux 网卡绑定的相关知识和技巧
原理知識
?
Linux 多網(wǎng)卡的7種bond模式原理
?
Linux 多網(wǎng)卡綁定
網(wǎng)卡綁定mode共有七種(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6
常用的有三種
mode=0:平衡負載模式,有自動備援,但需要”Switch”支援及設定。
mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。
mode=6:平衡負載模式,有自動備援,不必”Switch”支援及設定。
需要說明的是如果想做成mode 0的負載均衡,僅僅設置這里options bond0 miimon=100 mode=0是不夠的,與網(wǎng)卡相連的交換機必須做特殊配置(這兩個端口應該采取聚合方式),因為做bonding的這兩塊網(wǎng)卡是使用同一個MAC地址.從原理分析一下(bond運行在mode 0下):
mode 0下bond所綁定的網(wǎng)卡的IP都被修改成相同的mac地址,如果這些網(wǎng)卡都被接在同一個交換機,那么交換機的arp表里這個mac地址對應的端口就有多 個,那么交換機接受到發(fā)往這個mac地址的包應該往哪個端口轉(zhuǎn)發(fā)呢?正常情況下mac地址是全球唯一的,一個mac地址對應多個端口肯定使交換機迷惑了。所以 mode0下的bond如果連接到交換機,交換機這幾個端口應該采取聚合方式(cisco稱為 ethernetchannel,foundry稱為portgroup),因為交換機做了聚合后,聚合下的幾個端口也被捆綁成一個mac地址.我們的解 決辦法是,兩個網(wǎng)卡接入不同的交換機即可。
mode6模式下無需配置交換機,因為做bonding的這兩塊網(wǎng)卡是使用不同的MAC地址。
七種bond模式說明:
第一種模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡掄循環(huán)策略)
特點:傳輸數(shù)據(jù)包順序是依次傳輸(即:第1個包走eth0,下一個包就走eth1….一直循環(huán)下去,直到最后一個傳輸完畢),此模式提供負載平衡和容錯能力;但是我們知道如果一個連接或者會話的數(shù)據(jù)包從不同的接口發(fā)出的話,中途再經(jīng)過不同的鏈路,在客戶端很有可能會出現(xiàn)數(shù)據(jù)包無序到達的問題,而無序到達的數(shù)據(jù)包需要重新要求被發(fā)送,這樣網(wǎng)絡的吞吐量就會下降。→【點擊此處全文閱讀】
?
網(wǎng)卡綁定模式與自動網(wǎng)卡綁定解析
?
日常工作生產(chǎn)環(huán)境的x86服務器都使用了雙網(wǎng)卡接入模式,無論是出于增加網(wǎng)絡帶寬的考慮,還是冗余,高可用的考慮,雙網(wǎng)卡綁定都能帶來非常多的裨益,雙網(wǎng)卡即把兩塊網(wǎng)卡虛擬成為一塊網(wǎng)卡,具有相同的IP地址,可看做一個單獨的以太網(wǎng)接口設備。
正常情況下,網(wǎng)卡只接收目的MAC地址是自身MAC的以太網(wǎng)幀。但處于綁定模式下的兩個網(wǎng)卡運行在混雜模式下,會接受所有的以太網(wǎng)幀,并且將驅(qū)動程序中兩塊網(wǎng)卡的 MAC地址改成相同,可以接收特定MAC的數(shù)據(jù)幀并處理。
日常工作中使用的雙網(wǎng)卡綁定模式主要有A/S主備模式,AA靜態(tài)聚合模式,AA 802.3ad動態(tài)聚合模式三種,下面詳細分析一下他們的特點和適用場景。
?
一. 三種綁定模式淺析
(1). A/S主備模式
顧名思義,主備模式下只有一個網(wǎng)絡設備處于活動狀態(tài),當主網(wǎng)卡down掉以后,備網(wǎng)卡會切換為主設備。此模式提供比較高的容錯能力,并且mac地址在交換機等設備看來是可見并唯一的,但是資源利用率不高,也不能滿足高帶寬的需求。
主備模式的實現(xiàn)原理是將做綁定的兩個slave網(wǎng)口的MAC地址都改為虛擬網(wǎng)卡的MAC地址,而虛擬網(wǎng)卡的MAC地址是Bond創(chuàng)建啟動后,主網(wǎng)口的MAC地址。如下示意圖。
而當主網(wǎng)卡故障時,Bond會切換到備用網(wǎng)口,切換過程中,上層的應用是無感知不受影響的,因為bond驅(qū)動程序會接管上層應用的數(shù)據(jù)包,緩存起來等備用網(wǎng)卡起來后再通過備用網(wǎng)卡發(fā)送出去。但是緩沖區(qū)容量有限,如果切換時間過長會造成緩沖區(qū)溢出并丟包。
主備模式的容錯能力決定這種網(wǎng)卡綁定模式適用于對網(wǎng)絡鏈路帶寬不是很敏感,但是要求高冗余性的場景下,比如部署應用的機器。→【點擊此處全文閱讀】
?
?實 戰(zhàn)?
?
RHEL6 下 bond 雙網(wǎng)卡綁定服務 & RedHat 5/6 下網(wǎng)卡綁定腳本
?
操作步驟和注意事項如下:
1、注意事項:
首先確認要綁定的是哪2個網(wǎng)口,避免綁定時綁錯網(wǎng)口。
2、說明:
這里以綁定eth0和eth1的2個網(wǎng)口為例。
配置文件都在/etc/sysconfig/network-scripts/目錄下。
操作步驟
綁定前需要徹底關閉NetworlManger服務,否則會和bond網(wǎng)卡沖突
→【點擊此處全文閱讀】
?
REDHAT linux7.2 系統(tǒng)下做網(wǎng)卡綁定實戰(zhàn)錄
?
配置過程:
最小化安裝后,系統(tǒng)沒有ifconfig命令,從光盤介質(zhì)中安裝net-tools*x86.64.rpm 軟件包,,在系統(tǒng)光盤Package下面,rpm –ivh 安裝即可!
Linux網(wǎng)卡綁定有幾種模式:
bond模式:
1. Mode=0(balance-rr) 表示負載分擔round-robin,和交換機的聚合強制不協(xié)商的方式配合。
2. Mode=1(active-backup) 表示主備模式,只有一塊網(wǎng)卡是active,另外一塊是備的standby,這時如果交換機配的是捆綁,將不能正常工作,因為交換機往兩塊網(wǎng)卡發(fā)包,有一半包是丟棄的。
3. Mode=2(balance-xor) 表示XOR Hash負載分擔,和交換機的聚合強制不協(xié)商方式配合。(需要xmit_hash_policy)
4. Mode=3(broadcast) 表示所有包從所有interface發(fā)出,這個不均衡,只有冗余機制...和交換機的聚合強制不協(xié)商方式配合。
5. Mode=4(802.3ad) 表示支持802.3ad協(xié)議,和交換機的聚合LACP方式配合(需要xmit_hash_policy)
6. Mode=5(balance-tlb) 是根據(jù)每個slave的負載情況選擇slave進行發(fā)送,接收時使用當前輪到的slave
7. Mode=6(balance-alb) 在5的tlb基礎上增加了rlb。
修改配置文件,linux7 配置綁定,只需修改如下幾個文件就可以了。Linux 7系統(tǒng)下識別網(wǎng)設備名字為em1、em2這樣命名的,這里可以要求em1 、em2做綁定,模式是主備模式也就是mode=1
?
RedHat6.3進行雙網(wǎng)卡綁定
?
一、前期準備:
1.1、查看系統(tǒng)版本:
cat /etc/issue
1.2、檢查系統(tǒng)配置上是否支持bonding:
cat /boot/config-xxxxxxx |grep –i bonding(回車)
CONFIG_BONDING=m
(返回CONFIG_BONDING=m表示支持,否則需要編譯內(nèi)核使他支持bonding,需要編譯時請查閱相關文檔,此處不做詳細說明)
1.3、切換到網(wǎng)卡配置目錄,進行備份,防止出錯恢復:
cd /etc/sysconfig/network-scripts/ //切換目錄
cp ifcfg-eth0 /home/bak/ifcfg-eth0.bak //備份eth0到指定目錄
cp ifcfg-eth1 /home/bak/ifcfg-eth1.bak //備份eth1到指定目錄
二、配置步驟:
2.1、進行bond0網(wǎng)卡的配置:
切換到目錄/etc/sysconfig/network-scripts,創(chuàng)建一個ifcfg-bondX
vi /etc/sysconfig/network-scripts/ifcfg-bond0
//新建一個bond0配置文件,在文件中添加以下信息后,保存退出:
2.2、修改ifcfg-eth0和ifcfg-eth1的配置信息:(此處為網(wǎng)卡eth0和eth1綁定)
vi /etc/sysconfig/network-scripts/ifcfg-ethX
修改后配置信息如下:
cat ifcfg-eth0
cat ifcfg-eth1
2.3、修改/etc/modprobe.d/dist.conf文件,配置綁定模型,在末尾添加以下內(nèi)容:(低版本系統(tǒng)直接配置/etc/modprobe.conf文件)
alias bond0 bonding
options bond0 miimon=100 mode=1
//使系統(tǒng)啟動時加載bonding模塊
注:選項miimon 是指定隔多長時間進行鏈路檢查,單位為ms
選項mode是表示綁定口的工作模式,有0-6種模式,常用的為0、1:
mode=0表示load balancing(round-robin)負載均衡模式,兩塊網(wǎng)卡都在工作,當一張網(wǎng)卡停止工作時只會降低網(wǎng)絡的吞吐量,不影響正常通信,需要交換機支持;
mode=1表示fault-tolerance(active-backup)主備工作模式,提供冗余功能。即默認情況下只有一塊網(wǎng)卡工作,另一塊為備份;
mode=6表示負載均衡模式,兩塊網(wǎng)卡都工作,不需要交換機支持。
其他模式不做介紹。
2.4、配置/etc/rc.d/rc/local,設置需綁定的網(wǎng)卡及順序
至此,配置已基本完成。
2.5、關閉NetworkManager服務:
由于將接口下的NM_CONTROLLED設置成了no(如果設置成yes,在機器啟動時networkmanager會調(diào)用networkmanager的配置文件,直接回調(diào)用接口的MAC地址,這樣會導致物理接口mac與bond的mac不一致,這樣在通訊時出現(xiàn)丟包現(xiàn)象)。同時我們需要關閉系統(tǒng)的networkmanager服務:
service NetworkManager stop
或 # chconfig NetworkManager off //永久關閉NetworkManager服務
然后重啟機器:reboot
三、進行驗證:
3.1、查看接口配置:查看物理網(wǎng)卡的MAC地址是否與bond 的一致
3.2、查看bond的運行狀態(tài):
3.3、進行測試:
通過同網(wǎng)段的其他電腦進行ping該主機,然后拔掉eth1接口網(wǎng)線測試??赐ㄐ攀欠裾!?#xff08;作者:aixkevin)
?
RHEL7 配置雙網(wǎng)卡雙IP雙網(wǎng)關
?
1. 從 vCenter添加新的網(wǎng)卡設備, 指定 好響應的VLAN
2. 進入 虛擬機 查看網(wǎng)卡信息 :
I fconfig –a
nmcli device show | grep -i device
啟用 新網(wǎng)卡 并 創(chuàng)建配置文件
nmcli connection add type ethernet con-name eth1 ifname eth1 autoconnect yes
查看 UUID 并記錄 下來
nmcli connection show
修改 網(wǎng)卡配置信息 如下:
cd /etc/sysconfig/network-script
vi ifcfg-eth1
HWADDR=00:50:56:A6:13:9C # 正確的MAC地址
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=9181c6c4-be5f-4565-9710-38313fc1329f #正確的UUID
DEVICE=eth1
ONBOOT=yes
IPV6_PRIVACY=no
IPADDR=10.76.124.11
NETMASK=255.255.254.0
GATEWAY=0.0.0.0 # 不可以設置網(wǎng)關
DNS1=10.14.20.1
DNS2=10.14.20.2
為新網(wǎng)卡配置靜態(tài)路由
vi route-eth1
10.76. 100. 0/ 24 via 10.76.124.200 dev eth1
重啟服務器并查看路由信息
R eboot
Ip route list
default via 10.76.128.200 dev eth0 proto static metric 100
10.76.0.0/16 via 10.76.124.200 dev eth1 proto static metric 100
10.76.124.0/23 dev eth1 proto kernel scope link src 10.76.124.11 metric 100
10.76.128.0/23 dev eth0 proto kernel scope link src 10.76.128.11 metric 100
特別注意:
service restart network 在 RHEL7 上 執(zhí)行后 可能 會導致 eth1無法 起來, 解決 方法如下:
nmcli connection show
nmcli connection show –active
nmcli connection delete eth1
reboot
nmcli connection add type ethernet con-name eth1 ifname eth1 autoconnect yes
然后 完成后續(xù)IP以及路由的配置。
(作者:henry_chen)
?
Centos7 改網(wǎng)卡名稱的兩種方法
?
自動化運維需要所有的服務器網(wǎng)卡名稱統(tǒng)一,因此需要修改網(wǎng)卡名稱。
修改網(wǎng)卡名稱有兩種方法:
1.在第一次安裝系統(tǒng)時就修改;
2.系統(tǒng)已經(jīng)安裝完成后在修改;
先來看第一種:(第一次安裝系統(tǒng))
在選擇安裝centos系統(tǒng)時 用方向鍵鎖定 install CentOS 7 然后按下Tab鍵。
就會在同頁面的下方顯示一行代碼,我們就是在這行代碼最后添加參數(shù),達到永久修改網(wǎng)卡名稱的效果:
先空格,再輸入 net.ifnames=0 biosdevname=0 然后回車。
修改完成
第二種:(系統(tǒng)已經(jīng)安裝好了,怎么修改網(wǎng)卡名稱)
首先進入網(wǎng)卡配置文件,先把文件里的名字改過來
vim /etc/sysconfig/network-scripts/ifcfg-eno32
保存退出,再把這個網(wǎng)卡配置文件的名稱改掉
cd /etc/sysconfig/network-scripts/
mv ifcfg-eno32 ifcfg-eth0
修改grub配置文件/etc/grub2.cfg,把net.ifnames=0 biosdevname=0參數(shù) 加入指定位置
要加的位置 menuentry 下 linux 16 rhgb quiet 之前
vim /etc/default/grub
運行命令grub2-mkconfig -o /boot/grub2/grub.cfg 來重新生成GRUB配置并更新內(nèi)核參數(shù)。
reboot 重啟
完成
總結(jié)
以上是生活随笔為你收集整理的【干货】Linux 网卡绑定的相关知识和技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【送】VMware 虚拟化知识思维导图
- 下一篇: 【教程】怎么同时同时ping1000个I