本文介紹了Linux下的cluster軟體LVS,並舉例介紹一個Linux下的cluster(叢集)的安裝和實現的詳細過程。。
在各種網路服務普遍應用的今天,隨網路速度的提高以及使用者的增加,在一些繁忙的場合,單憑一台機器已經無法就能應付所有的網路請求了。為瞭解決這個問題,許多使用者就采 用一組cluster(叢集)來代替單一的機器。cluster可以將多台電腦串連起來協同運作以對外提供各種服務,比如Apache、FTP、Mail等。
在Linux上最常見的、也可能是運用最廣泛的cluster方案就是LVS(Linux Virtual
Server),很高興LVS也是一個中國人建立和開發的開放源碼項目。LVS自1998年開始,發展到現在已經是一個比較成熟的技術項目了。有許多比較著名網站和組織都在使用LVS架設的cluster,比如:www.linux.com、sourceforge.net、www.real.com等。
下面就開始介紹一下,筆者是如何利用LVS來架設一組cluster來對外提供Apache和FTP服務的。
安裝作業系統
筆者選用的是Red Hat 9.0作為些cluster的director機器和所有real server機器的作業系統。RH的安裝過程從略,筆者根據實際需要,只安裝了少數的包。對於成批安裝Linux,建議試試Kickstart來進入批理安裝。
編譯支援LVS的核心
LVS對Linux的kernel進行了修改和增加,所以要重新編譯 linux kernel。我們先從http://www.linuxvirtualserver.org下載到LVS的核心補丁,對原有核心原始碼進行更新,然後重新編譯Linux的kernel。
下載LVS的核心補丁時要注意補丁版本要和kernel版本相一致,對於RH9.0,它的Linux核心版本是2.4.20,所以對應核心補丁應該是http://www.linuxvirtualserver.org/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9.patch.gz
另外還有一個補丁是用來解決某些情況下ARP協議不能正常工作問題的,從http://www.ssi.bg/~ja/hidden-2.4.20pre10-1.diff下載。
把上面下載的兩個補丁複製到/usr/src目錄下,然後執行以下命令:
cd /usr/src
gzip -cd linux-2.4.20-ipvs-1.0.9.patch.gz
cd /usr/src/linux
patch -p1 < ../linux-2.4.20-ipvs-1.0.9.patch
patch -p1 < ../hidden-2.4.20pre10-1.diff
make mrproper
make menuconfig
執行make menuconfig時,我們將進入一個圖形化的介面,在其中可以對Linux Kernel進行詳細設定。與LVS相關的kernel選項都在“Networking options”中,進入“Networking options”,可以查看到“IP: Virtual Server Configuration”選項,將其它所有的子選項都選上:
<M> virtual server support (EXPERIMENTAL)
[*] IP virtual server debugging
(12) IPVS connection table size (the Nth power of 2)
--- IPVS scheduler
<M> round-robin scheduling
<M> weighted round-robin scheduling
<M> least-connection scheduling scheduling
<M> weighted least-connection scheduling
<M> locality-based least-connection scheduling
<M> locality-based least-connection with replication scheduling
<M> destination hashing scheduling
<M> source hashing scheduling
<M> shortest expected delay scheduling
<M> never queue scheduling
--- IPVS application helper
<M> FTP protocol helper
另外,“Networking options”中的“IP: Netfilter Configuration"中的選項的所有子項,除了以下兩項不要選之外,其它全可以選:
< > ipchains (2.2-style) support
< > ipfwadm (2.0-style) support
還有,“Networking options”中還有一些關於網路的選項,要注意按自己的需要去選擇:
<*> Packet socket
[ ] Packet socket: mmapped IO
<*> Netlink device emulation
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging
[*] Socket Filtering
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
[*] IP: policy routing
[ ] IP: use netfilter MARK value as routing key
[ ] IP: fast network address translation
<M> IP: tunneling