架設(shè)基于Linu(2.6內(nèi)核)的服務(wù)器集群

時間:2022-11-17 10:18:00

導(dǎo)語:架設(shè)基于Linu(2.6內(nèi)核)的服務(wù)器集群一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

架設(shè)基于Linu(2.6內(nèi)核)的服務(wù)器集群

什么是集群?

集群,是一組獨立的計算機系統(tǒng)構(gòu)成一個松耦合的多處理器系統(tǒng),它們之間通過網(wǎng)絡(luò)實現(xiàn)進程間的通信。應(yīng)用程序可以通過網(wǎng)絡(luò)共享內(nèi)存進行消息傳送,實現(xiàn)分布式計算機。集群的工作方式類似于人們之間的協(xié)同工作。

Vs-nat集群是一種最簡單的集群。他的結(jié)構(gòu)類似于linux透明服務(wù)器。

這是從網(wǎng)絡(luò)上下載的一幅圖,這是一種典型的nat結(jié)構(gòu)。可以用此種結(jié)構(gòu)作簡單測試。上圖的LVS標(biāo)識是一臺linux主機,它負責(zé)均衡流量。通常稱它為linux虛擬服務(wù)器。RS1標(biāo)識和RS2標(biāo)識是實際的服務(wù)器。虛擬服務(wù)器不處理服務(wù)請求,所有的請求都由實際服務(wù)器處理。上圖的nat結(jié)構(gòu)非常簡單,可以根據(jù)實際情況修改網(wǎng)絡(luò)結(jié)構(gòu)。

LVS上的配置過程

負載均衡是內(nèi)核級別的一個功能模塊,發(fā)行版上一般不會提供負載均衡的功能。因此我們需要重新編譯內(nèi)核,使其支持負載均衡功能。我們選擇的是最新版的內(nèi)核2.6.14版本。

以下是編譯并使新內(nèi)核正確工作的過程。

首先從上下載源代碼包module-init-tools-3.1.tar.bz2

從名字上就可以看出這是和模塊相關(guān)的一些工具。我們將負載均衡作為模塊加載到內(nèi)核里。

用tar?Cjzvf解壓縮,接著按照README中的步驟安裝即可。

./configure?Cprefix=/

makemoveold

make

makeinstall

此時module-init-tools安裝完畢。

下面安裝2.6.14內(nèi)核的過程

從上下載源代碼包linux-2.6.14.2.tar.bz2到/usr/src/目錄

用tar?Cjxvflinux-2.6.14.2.tar.bz2命令解壓縮

解壓縮之后產(chǎn)生linux-2.6.14目錄

將此目錄更名mvlinux-2.6.14linux

然后執(zhí)行cd/usr/src/linux

makemenuconfig這是一個圖形化的內(nèi)核配置工具。可以用這個工具來選擇新內(nèi)核的

功能。在此就不詳細說明了,只需要選擇exit即可。

make這是編譯內(nèi)核的命令這個命令執(zhí)行的時間比較長需要耐心等待了:-)

makemodules這是編譯內(nèi)核模塊的命令時間不會太長看你的cpu速度了

makemodules_install當(dāng)然是安裝模塊了

至此一個嶄新的屬于你自己的內(nèi)核就編譯完成了

接下來還需要做一些工作使新內(nèi)核順利工作

當(dāng)內(nèi)核編譯完成的時候,新的內(nèi)核的位置是在/usr/src/linux/arch/i386/boot下,其中的bzImage就是你的新內(nèi)核:-)

cpbzImage/boot將新內(nèi)核拷貝到系統(tǒng)的啟動分區(qū)

接下來修改grub(如果你裝的是lilo也沒關(guān)系,方法大致上是一樣的)

vi/etc/grub.conf

追加以下內(nèi)容

titlelinuxvirtueserver

root(hd0,0)

kernel/boot/bzImageroot=/dev/hda1

然后保存退出。

Reboot重起就會發(fā)現(xiàn)在選擇時多了一項linuxvirtueserver

選擇該項就可以用你的新內(nèi)核了.

接下來介紹ipvsadm

ipvsadm是配置內(nèi)核流量分配策略的工具。它可以讓我們選擇采用什么策略來轉(zhuǎn)發(fā)數(shù)據(jù)包。

最簡單的策略就是輪循了。就象玩牌時發(fā)牌一樣。外部的請求輪流發(fā)給實際服務(wù)器

它的安裝太簡單了,在README中有說明:)

安裝完畢執(zhí)行以下命令:

echo1>/proc/sys/net/ipv4/ip_forward

./ipvsadm-C

./ipvsadm?CA?Ct192.168.88.23:80?Csrr

./ipvsadm?Ca?Ct192.168.88.23:80-r10.0.0.2:80-m

./ipvsadm?Ca?Ct192.168.88.23:80-r10.0.0.3:80-m

./ipvsadm?Ca?Ct192.168.88.23:80-r10.0.0.4:80-m

//第一句的意思是使linux主機支持數(shù)據(jù)包轉(zhuǎn)發(fā)

//第二句的意思是清空內(nèi)核虛擬列表

//第三句的意思是加入一項虛擬服務(wù),提供服務(wù)的是192.168.88.23的80端口

//-s參數(shù)指定調(diào)度方式rr為輪循

//第四句的意思是為上面的虛擬服務(wù)加入一個實際服務(wù)器,ip為10.0.0.2,端口為80

//-m參數(shù)指定nat方式

//接下來的不用我說了吧:-)

上面是我測試時用的代碼。簡單說明一下它的結(jié)構(gòu):用一臺機器做負載均衡,它有兩塊網(wǎng)卡,1塊的ip為192.168.88.23,這個ip是整個集群對外的ip.另一塊的ip為10.0.0.1.這個ip

的作用當(dāng)然就是連接實際的服務(wù)器了J我測試時用三臺機器做實際服務(wù)器,ip為10.0.0.2

10.0.0.3和10.0.0.3,他們的網(wǎng)關(guān)都設(shè)為10.0.0.1,系統(tǒng)都為redhat9.0,都由apache做服務(wù)。

如果大家有公有ip的話就把原來ip為192.168.88.23的網(wǎng)卡設(shè)為你的公有ip就行了。

關(guān)于iptables

我下了新版本的iptables-1.3.4。解壓縮之后按照INSTALL中的說明安裝完畢之后執(zhí)行

./iptables?Ctnat?CAPOSTROUTING?Cs10.0.0.0/24?Cd0.0.0.0/0-jSNAT?Cto192.168.88.23。

測試

在10.0.0.2,10.0.0.3.10.0.0.4上分別布置不同的index.html.redhat9上默認的主頁位置在

/var/www/html/.然后執(zhí)行servicehttpdstart就行了。在192.168.88.21上瀏覽

192.168.88.23,會出現(xiàn)其中的一個index.html.這里需要注意一下瀏覽器的設(shè)置,需要刪除臨時文件之后刷新一下才能看到其他的index.html.這是瀏覽器的問題,不是配置出錯。能夠看到不同的主頁面說明3個實際服務(wù)器都能正常工作,集群就可以工作了。

問題

如果負責(zé)流量分配的機器癱瘓了怎么辦或者實際服務(wù)器出了問題該怎么解決?

第一個問題采用的方法是熱備份。這也是大多數(shù)集群采用的方法。需要heatbeat軟件

第二個問題采用的方法是在負載均衡機器上配置keepalive軟件。