Linux下雙網絡卡繫結技術實現負載均衡和失效保護

2023-01-14 07:57:06 字數 5921 閱讀 1273

cgweb

保持伺服器的高可用性是企業級 it 環境的重要因素。其中最重要的一點是伺服器網路連線的高可用性。網絡卡(nic)繫結技術有助於保證高可用性特性並提供其它優勢以提高網路效能。

我們在這介紹的linux雙網絡卡繫結實現就是使用兩塊網絡卡虛擬成為一塊網絡卡,這個聚合起來的裝置看起來是乙個單獨的乙太網介面裝置,通俗點講就是兩塊網絡卡具有相同的ip位址而並行鏈結聚合成乙個邏輯鏈路工作。其實這項技術在sun和cisco中早已存在,被稱為trunking和etherchannel技術,在linux的的核心中也採用這這種技術,被稱為bonding。bonding技術的最早應用是在集群——beowulf上,為了提高集群節點間的資料傳輸而設計的。

下面我們討論一下bonding 的原理,什麼是bonding需要從網絡卡的混雜(promisc)模式說起。我們知道,在正常情況下,網絡卡只接收目的硬體位址(mac address)是自身mac的乙太網幀,對於別的資料幀都濾掉,以減輕驅動程式的負擔。但是網絡卡也支援另外一種被稱為混雜promisc的模式,可以接收網路上所有的幀,比如說tcpdump,就是執行在這個模式下。

bonding也執行在這個模式下,而且修改了驅動程式中的mac位址,將兩塊網絡卡的mac位址改成相同,可以接收特定mac的資料幀。然後把相應的資料幀傳送給bond驅動程式處理。

說了半天理論,其實配置很簡單,一共四個步驟:

實驗的作業系統是redhat linux enterprise 3.0

繫結的前提條件:晶元組型號相同,而且網絡卡應該具備自己獨立的bios晶元

雙網絡卡邦定的拓樸圖(見下圖)

1.編輯虛擬網路介面配置檔案,指定網絡卡ip

vi /etc/sysconfig/ network-scripts/ ifcfg-bond0

[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

2 #vi ifcfg-bond0

將第一行改成 device=bond0

# cat ifcfg-bond0

device=bond0

bootproto=static

ipaddr=172.31.0.13

netmask=255.255.252.0

broadcast=172.31.3.254

onboot=yes

type=ethernet

這裡要主意,不要指定單個網絡卡的ip 位址、子網掩碼或網絡卡 id。將上述資訊指定到虛擬介面卡(bonding)中即可。

[root@rhas-13 network-scripts]# cat ifcfg-eth0

device=eth0

onboot=yes

bootproto=dhcp

[root@rhas-13 network-scripts]# cat ifcfg-eth1

device=eth0

onboot=yes

bootproto=dhcp

3 # vi /etc/

編輯 /etc/ 檔案,加入如下一行內容,以使系統在啟動時載入bonding模組,對外虛擬網路介面裝置為 bond0

加入下列兩行

alias bond0 bonding

options bond0 miimon=100 mode=1

說明:miimon是用來進行鏈路監測的。 比如:miimon=100,那麼系統每100ms監測一次鏈路連線狀態,如果有一條線路不通就轉入另一條線

路;mode的值表示工作模式,他共有0,1,2,3四種模式,常用的為0,1兩種。

mode=0表示load balancing (round-robin)為負載均衡方式,兩塊網絡卡都工作。

mode=1表示fault-tolerance (active-backup)提供冗餘功能,工作方式是主備的工作方式,也就是說預設情況下只有一塊網絡卡工作,另一塊做備份.

bonding只能提供鏈路監測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身並沒有故障,那麼bonding會認為鏈路沒有問題而繼續使用

4 # vi /etc/

加入兩行

ifensl**e bond0 eth0 eth1

route add -net 172.31.3.254 netmask 255.255.255.0 bond0

到這時已經配置完畢重新啟動機器.

重啟會看見以下資訊就表示配置成功了bringing up inte***ce bond0 ok

bringing up inte***ce eth0 ok

bringing up inte***ce eth1 ok下面我們討論以下mode分別為0,1時的情況

mode=1工作在主備模式下,這時eth1作為備份網絡卡是no arp的

[root@rhas-13 network-scripts]# ifconfig 驗證網絡卡的配置資訊

bond0 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running master multicast mtu:1500 metric:1

rx packets:18495 errors:0 dropped:0 overruns:0 frame:0

tx packets:480 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

rx bytes:1587253 (1.5 mb) tx bytes:89642 (87.5 kb)

eth0 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running sl**e multicast mtu:1500 metric:1

rx packets:9572 errors:0 dropped:0 overruns:0 frame:0

tx packets:480 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

rx bytes:833514 (813.9 kb) tx bytes:89642 (87.5 kb)

interrupt:11

eth1 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running noarp sl**e multicast mtu:1500 metric:1

rx packets:8923 errors:0 dropped:0 overruns:0 frame:0

tx packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

rx bytes:753739 (736.0 kb) tx bytes:0 (0.0 b)

interrupt:15

那也就是說在主備模式下,當乙個網路介面失效時(例如主交換機掉電等),不回出現網路中斷,系統會按照cat /etc/裡指定網絡卡的順序工作,機器仍能對外服務,起到了失效保護的功能.

在mode=0 負載均衡工作模式,他能提供兩倍的頻寬,下我們來看一下網絡卡的配置資訊

[root@rhas-13 root]# ifconfig

bond0 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

8b inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running master multicast mtu:1500 metric:1

rx packets:2817 errors:0 dropped:0 overruns:0 frame:0

tx packets:95 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

rx bytes:226957 (221.6 kb) tx bytes:15266 (14.9 kb)

eth0 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running sl**e multicast mtu:1500 metric:1

rx packets:1406 errors:0 dropped:0 overruns:0 frame:0

tx packets:48 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

rx bytes:113967 (111.2 kb) tx bytes:7268 (7.0 kb)

interrupt:11

eth1 link encap:ethernet hwaddr 00:0e:7f:25:d9:8b

inet addr:172.31.0.13 bcast:172.31.3.255 mask:255.255.252.0

up broadcast running sl**e multicast mtu:1500 metric:1

rx packets:1411 errors:0 dropped:0 overruns:0 frame:0

tx packets:47 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

rx bytes:112990 (110.3 kb) tx bytes:7998 (7.8 kb)

interrupt:15

在這種情況下出現一塊網絡卡失效,僅僅會是伺服器出口頻寬下降,也不會影響網路使用通過檢視bond0的工作狀態查詢能詳細的掌握bonding的工作狀態

[root@rhas-13 bonding]# cat /proc/net/bonding/bond0

(september 15, 2003)

bonding mode: load balancing (round-robin)

mii status: up

mii polling interval (ms): 0

up delay (ms): 0

down delay (ms): 0

multicast mode: all sl**es

sl**e inte***ce: eth1

mii status: up

link failure count: 0

permanent hw addr: 00:0e:7f:25:d9:8a

sl**e inte***ce: eth0

mii status: up

link failure count: 0

permanent hw addr: 00:0e:7f:25:d9:8b

linux下通過網絡卡邦定技術既增加了伺服器的可靠性,又增加了可用網路頻寬,為使用者提供不間斷的關鍵服務。用以上方法均在redhat的多個版本測試成功,而且效果良好.心動不如行動,趕快一試吧!

/usr/share/doc/kernel-doc-2.4.21/networking/

如何實現雙網絡卡上網

問題描述 現在有兩台pc機,其中一台pc內建雙網絡卡。但是現在只有一條可以連線外網的網線,那麼如何實現兩台電腦同時上網?解決辦法 假設兩台pc機分別叫做a 雙網絡卡 和b,那麼a和b之間用一條交叉線相連 即一端為568a另一端為568b 線序的網線 a的另一網絡卡插槽連線外網。a計算機的需要的操作 ...

雙網絡卡的電腦工作原理

雙網絡卡就是一台電腦 一般是台式電腦 安裝兩塊網絡卡,然後另一台機器 一般是筆記本 通過此台電腦共享上網。使用雙網絡卡配置上網的好處 1.經濟 只需30多元買一塊網絡卡和一條網線即可搞定 2.穩定 比使用 軟體要穩定許多,速度也很快 雙網絡卡的具體配置 一.花25塊錢買了乙個網絡卡,把其中一台電腦搞...

雙網絡卡的電腦工作原理

雙網絡卡就是一台電腦 一般是台式電腦 安裝兩塊網絡卡,然後另一台機器 一般是筆記本 通過此台電腦共享上網。使用雙網絡卡配置上網的好處 1.經濟 只需30多元買一塊網絡卡和一條網線即可搞定 2.穩定 比使用 軟體要穩定許多,速度也很快 雙網絡卡的具體配置 一.花25塊錢買了乙個網絡卡,把其中一台電腦搞...