1.前言
先來簡單說說負載平衡叢集, 它是在應用伺服器高負載的情況下,由多台節點提供可伸縮的,高負載的伺服器組以保證對外提供良好的服務響應;而LVS就是實現這一功能的技術,它通過使核心支援ipvs來實現LVS/Direct Routing (DR)、LVS/IP Tunnel、LVS/NAT的功能。由於本文的著眼點在於如何利用LVS構建一個負載平衡叢集,所以關於負載平衡叢集、LVS的詳細內容就不在這裡闡述了,如果大家有興趣可參考如下資訊:
http://www.linuxvirtualserver.org/ LVS的官方網站
http://www-900.ibm.com/developerWorks/cn/linux/cluster/lvs/part1/index.shtml LVS項目介紹
RedHat 7.3/8.0都把ipvs預先編譯到了RedHat發行版的核心中,但使用的ipvs版本比較低是ipvs 0.9.7/1.0.4,從RedHat 9開始ipvs不再被預先編譯到了RedHat發行版的核心中,本文介紹了如何把最新版的ipvs Version 1.0.9編譯到核心中並配置負載平衡叢集的方法和一些技巧。
不論是在哪個版本的RedHat Linux上安裝ipvs,工作大都可以分為如下幾步:
圖1給出了最簡單的負載平衡叢集的網路拓撲,這裡需要指出的是以上提到的安裝ipvs/ipvsadm的工作都是在Director上進行的。
2.在RedHat Linux上實現ipvs
在RedHat 7.3/8.0已經預先打了ipvs的補丁,在預先安裝的核心中已將ipvs編譯成模組,如果你能在目錄/lib/modules/2.4.18-*/kernel/net/ipv4/ipvs中看到ip_vs_*檔案,就證明你的系統已經支援ipvs,可以通過如下步驟安裝ipvsadm並配置轉寄方式。
但系統先行編譯的ipvs是比較早的版本(version 0.9.7/1.0.4),本文把它升級到最新的版本Version 1.0.9。
2.1得到核心源碼和相關的軟體包
這裡需要強調的是由於RedHat 7.3/8.0的核心源碼中已經預先打了ipvs的補丁,所以在安裝ipvs時不能使用RedHat光碟片中的Kernel Source,而是需要去下載標準的核心。對於RedHat 9.0,雖然核心中沒有先行編譯ipvs,但我還是提倡使用standard kernel,因為所有的ipvs的補丁包都是為標準核心開發的。從kernel ftp site得到standard kernel linux-2.4.18.tar.gz(RedHat 7.3/8.0), linux-2.4.20.tar.gz (RedHat 9.0), 從lvs homepage 得到ipvs-1.0.9.tar.gz、ipvsadm-1.21.tar.gz。(在下面的闡述中都以核心linux-2.4.18.tar.gz為例,對於核心linux-2.4.20.tar.gz做法是完全相同的)
2.2把ipvs補丁Patch到核心源碼中
把linux-2.4.18.tar.gz解壓到/usr/src目錄,產生了/usr/src/linux目錄;如果產生的是/usr/src/linux-2.4.18*目錄,則要在/usr/src下建立一個串連 ln –s linux-2.4.18* linux,因為在ipvs-1.0.9中的makefile檔案中預設指定Kernel Source的路徑為:KERNELSOURCE = /usr/src/linux(當然,如果您直接修改makefile中的KERNELSOURCE值,使它指向源碼的目錄也可以)。
把ipvs-1.0.9.tar.gz解壓縮到某個目錄,如/usr/src/source,產生了/usr/src/source/ipvs-1.0.9目錄;進入/usr/src/source/ipvs-1.0.9,依次執行如下命令:make patchkernel、make installsource,將ipvs的Patch載入到kernel的source中。當然您也可以用linux-2.4.20-ipvs-1.0.9.patch.gz直接patch到核心中,在/usr/src執行 gzip -cd linux-2.4.20-ipvs-1.0.9.patch.gz,然後進入/usr/src/linux執行patch -p1 < ../linux-2.4.20-ipvs-1.0.9.patch