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