Next Previous Contents

20. 其它可行性 (Other possibilities)

本章所列均為 Linux 路由和流量引導所需進行的計劃。關於這些聯結﹐有些可能要完全參考原文件﹔有些則自身就寫得非常好﹐而無須更多的 HOWTO。

802.1Q VLAN Implementation for Linux (site)

VLAN 是一個非常勁酷的工具﹐能夠更為虛擬而非實體的隔離您的網路。關於 VLAN 的優秀資料可以到這裡發掘﹕

here。按照這個實作﹐您也可以讓您的 Linux 機器和諸如 Cisco Catalyst、3Com: {Corebuilder, Netbuilder II、SuperStack II switch 630}、Extreme Ntwks Summit 48、Foundry: ServerIronXL, FastIron}﹐這些機器進行 VLAN 連接。

Alternate 802.1Q VLAN Implementation for Linux (site)

。Alternative VLAN implementation for linux﹐該計劃的起源是因為不認同 '已建立的' VLAN 計劃之架構及編程﹐而另起爐灶﹐進行通盤的全新設計。

Linux Virtual Server (site)

這些高手個個武藝超群。其中 Linux Virtual Server 是構建在真實伺服器族叢之上的伺服器﹐在 Linux 作業系統上執行平行負載﹐極具高伸展性和高可用性。其族叢架構對終端用戶來說是透明的﹐他們只看到單一的虛擬伺服器而已。

一言以蔽之﹐不管您需要在什麼等級的流量上執行什麼樣的平行負載﹐LVS 都有辦法做到。他們某些技術堪稱天才之作﹐實在匪夷所思﹗比方說﹐他們讓數台伺服器在一個網段上使用同一個 IP 位址﹐但把它們的 ARP 關閉掉。只有 LVS 機器進行 ARP --- 它會決定進入封包交由哪台後端主機處理﹐然後直接將他送到正確的後端伺服器之 MAC 位址上。而外送的流量則直接流經路由器﹐而不再經過 LVS 機器﹐如此竟看不到 5Gbit/s 的容量到處亂竄﹐而不會構成瓶頸。

LVS 是用 Linux 2.0 和 2.2 的核心修補來實作﹐然而﹐2.4 裡因為本身自帶 Netfilter 模組﹐所以並不需要核心修補﹗他們的 2.4 支援尚處於初期開發階段﹐所以不妨與他們切磋一下並提供回饋或修補。

CBQ.init (site)

要設定 CBQ 或會讓人有怯步之感﹐尤其是您所要的僅僅是在一台路由器後面引導某些電腦而已。CBQ.init 可以幫您用簡單的語法設定好 Linux。

例如﹐如果您想要 192.168.1.0/24 這個 subnet(接在 10mbit eth1 之上) 裡面的所有電腦限制在 28kbit/s 的下載速度﹐只需將下面的內容放進 CBQ.init 設定檔裡面﹕

DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.0/24

總的來講﹐如果您對 'how and why' 不感興趣﹐用此程式足矣。我們在真實的營運環境中使用 CBQ.init﹐發現它還真的不負眾望。它甚至還能應付更進階的事情呢﹐例如按時引導之類。它的文件已嵌入在 script 之中﹐這也就是為甚麼您找不到 README 的原因。

Chronox easy shaping scripts (site)

Stephan Mueller (smueller@chronox.de) 寫了兩個非常好用的 script﹕'limit.conn' 和 'shaper'。前者讓您輕鬆的對單一下載連線進行節流﹐只需如此則可﹕

# limit.conn -s SERVERIP -p SERVERPORT -l LIMIT

它在 Linux 2.2 和 2.4 上面都可以使用。

第二個 script 則更為複雜﹐可以根據 iptables 規則做出許多不同的佇列﹐也就是先將封包標識起來﹐再進行引導。

Virtual Router Redundancy Protocol implementation (site)

這個完完全全是為了冗餘(redundancy)所需。用兩台各自擁有 IP 位址和 MAC 位址的機器﹐共同建立起第三個 IP 位址和 MAC 位址﹐當然﹐它是虛擬的。如此設計本來純粹是為路由器而設計的﹐它需要恆定的 MAC 位址﹐但同時也替伺服器工作。

這個方法的精妙之處是﹐設定起來不費吹灰之力。不需要核心編譯或修補﹐全為使用者空間。

只需在所有參與服務的機器上執行﹕

# vrrpd -i eth0 -v 50 10.0.0.22

您已漸入佳境了﹗10.0.0.22 現在由您其中一台伺服器擔當﹐很可能是首先執行 vrrp daemon 的機器。現在斷掉這台電腦的連線﹐在極短瞬間之內﹐其它一台電腦就會接管這個 10.0.0.22 位址﹐還有它的 MAC 位址。

我曾在這裡嘗試過﹐而且不到一分鐘就設定起來了。然而不知道什麼原因﹐它會將預設網關丟棄掉﹐不過可以用 -n 旗標來避免啦。

這是一個 '活生生' 的 failover 機制﹕

64 bytes from 10.0.0.22: icmp_seq=3 ttl=255 time=0.2 ms
64 bytes from 10.0.0.22: icmp_seq=4 ttl=255 time=0.2 ms
64 bytes from 10.0.0.22: icmp_seq=5 ttl=255 time=16.8 ms
64 bytes from 10.0.0.22: icmp_seq=6 ttl=255 time=1.8 ms
64 bytes from 10.0.0.22: icmp_seq=7 ttl=255 time=1.7 ms

竟然沒有丟失 *任何一個* ping 封包﹗我在第 4 個封包之後將我的 P200 連線切斷﹐緊接著我的 486 就接手了﹐您可以發現延遲的增加。


Next Previous Contents