結合介面是甚麼,它如何運作?
結合介面等同連接阜中斷法。以下我會使用結合這個名詞因為我們實際上是將介面結合在一起。
結合介面容許你把多個連接埠聚合為單一群組,有效地將頻寬合併到一個連線。結合介面亦讓你建立數十億位元的管道來輸送流量到網絡上流量早最高的地方。舉個例說,你可以集合三個百萬位元的連接埠作為一個三百萬位元的中斷連接埠。它等同於一個時速有三百萬位元組的介面。
我應該何時應用結合介面?
你可應用在任何需要有冗餘連線、容錯、或負載平衡的網絡上。這是建立高可用性網絡段的最佳方法。一個有效地結合介面的方法就是同時利用 802.1q VLAN 的支援(你的網絡設備必需實施 802.1q 通訊協議)。
有甚麼結合模式可供使用?
最好的文檔已收錄在 Linux Channel Bonding 計劃的網頁 http://sourceforge.net/projects/bonding/
mode=1(active-backup)
有效備用政策:結合介面裡只有一個生效的從屬。唯有當有效的從屬失效,另一個從屬才會有效。為了避免混淆網絡交換器,結合介面的 MAC 位址只會在一個連接埠(網絡配接卡)上顯現出來。這個模式提供容錯。主要的選項會影響這個模式的特性。
mode=2(balance-xor)
XOR 政策:傳輸時根據[(來源地 MAC 位址 XOR 目的地 MAC 位址) modulo 從屬數量]。這樣同一個 MAC 位址便會選用同一個從屬。這個模式提供負載平衡和容錯。
mode=3(broadcast)
廣播政策:將一切經由所有從屬介面傳輸。這個模式提供容錯。
mode=4(802.3ad)
IEEE 802.3ad 動態連結聚合。建立擁有相同速度及雙工設定的聚合群組。按照 802.3ad 規格應用所有從屬於生效的聚合器中。
- 先決條件:
- 每個從屬的底層驅動程式支援 ethtool 檢索速度及雙工設定。
- 一個支援 IEEE 802.3ad 動態連結聚合的交換器。 多數交換器都須要作出某種設定來啟用 802.3ad 模式。
mode=5(balance-tlb)
可調適傳輸負載平衡:不需要支援任何特殊交換的結合通道。外傳信息會按照各個從屬的現有負載(相對速度而運算出來)作出分配。內傳信息是經由現時生效的從屬接收。假若接收的從屬失效,另一個從屬會取用失效的從屬的 MAC 位址。
- 先決條件:
- 每個從屬的底層驅動程式支援 ethtool 檢索速度。
mode=6(balance-alb)
可調適負載平衡:包括 IPV4 流量的 balance-tlb 及接收負載平衡(rlb),而且不需要支援任何特殊交換。接收負載平衡是透過 ARP 協商來達成。結合介面驅動程式會攔截本地系統所發送的 ARP 答複,然後將來源地的硬件位址以結合介面內某個從屬的獨特硬件位址取代,好達到個別同級採用不同的伺服器硬件位址。
CentOS 4 上的結合介面
在 modprobe.conf 檔內加入下列內容:
{{{alias bond0 bonding options bond0 miimon=80 mode=5 }}}
在加入任何網絡別名前,先確定已經加入模式
{{{模式: mode=0 (Balance Round Robin) mode=1 (Active backup) mode=2 (Balance XOR) mode=3 (Broadcast) mode=4 (802.3ad) mode=5 (Balance TLB) mode=6 (Balance ALB) }}}
在 /etc/sysconfig/network-scripts/ 目錄內建立 ifcfg-bond0 設定檔:
{{{DEVICE=bond0 IPADDR=<ip address> NETMASK= NETWORK= BROADCAST= GATEWAY= ONBOOT=yes BOOTPROTO=none USERCTL=no }}}
修改 ifcfg-eth0 參與新結合介面: {{{DEVICE=eth0 ONBOOT=yes BOOTPROTO=none USERCTL=no MASTER=bond0 SLAVE=yes }}}
檢查結合介面的現況。 {{{cat /proc/net/bonding/bond0 }}}
你可以使用多個結合介面,但你必需根據介面數量以個別選項多重載入結合介面的模塊。假設你需要兩個結合介面,你必須將 /etc/modules.conf 如下設定:
alias bond0 bonding options bond0 -o bond0 mode=0 miimon=100 alias bond1 bonding options bond1 -o bond1 mode=1 miimon=100
你可以使用 ifenslave 這個指令來親自管理結合介面的狀態。詳情請參閱 ifenslave 的指令說明。
CentOS 4 之後
隨著時間的過去,編輯 /etc/modprobe.conf 已經不受歡迎,取而代之的是針對啟動腳本編寫小型設定檔,它們應以 .conf 作為副檔名,但這並非必須的。 這些檔案位於 /etc/modprobe.d/,並且按字母排序來執行。採用這個命名慣例有助一個發行版準備迎接 init 的繼承者,例如 systemd。
Translation of revision 19