基于Linux的負(fù)載均衡技術(shù)
引言
隨著計(jì)算機(jī)網(wǎng)絡(luò)和通信技術(shù)的快速發(fā)展,越來越多的人通過互聯(lián)網(wǎng)獲取信息、購物和娛樂,大量用戶進(jìn)入網(wǎng)絡(luò),面對(duì)巨大的數(shù)據(jù)流量和計(jì)算強(qiáng)度,各類信息中心或數(shù)據(jù)處理中心迫切需要具有快速響應(yīng)能力、高可伸縮性、高可用性、易于管理的信息服務(wù)器來提高網(wǎng)絡(luò)吞吐量和對(duì)請(qǐng)求響應(yīng)的能力。為保證及時(shí)的處理用戶請(qǐng)求,增加網(wǎng)絡(luò)吞吐量,提高服務(wù)質(zhì)量,勢必需要的對(duì)服務(wù)器軟硬件進(jìn)行升級(jí),一般采取兩種方案,一是改善單個(gè)服務(wù)器的配置,如更換處理速度更快的服務(wù)器等以提高其性能,另一種做法則是把多臺(tái)服務(wù)器用局域網(wǎng)絡(luò)連接成一個(gè)整體結(jié)構(gòu),通過并行處理及相互間的信息交流來擴(kuò)展其性能。顯然后者具有很高的整體性能、高可伸縮性、高可靠性和更高的性價(jià)比。
LinuxVirtualServer集群的結(jié)構(gòu)
Linux虛擬服務(wù)器(LinuxVirtualServer,LVS)建筑于實(shí)際的服務(wù)器集群之上,用戶看不到提供服務(wù)的多臺(tái)實(shí)際服務(wù)器,而只能看見一臺(tái)作為負(fù)載平衡器的服務(wù)器。實(shí)際的服務(wù)器通過高速局域網(wǎng)或地理上分散的廣域網(wǎng)連接。實(shí)際服務(wù)器的前端是一臺(tái)負(fù)載平衡器(LoadBalance,LB),它將用戶的請(qǐng)求調(diào)度到真實(shí)服務(wù)器上完成,客戶訪問集群系統(tǒng)提供的網(wǎng)絡(luò)服務(wù)就像訪問一臺(tái)高性能、高可用的服務(wù)器一樣。
LinuxVirtualServer集群中負(fù)載均衡技術(shù)
2.1負(fù)載均衡調(diào)度算法
均衡算法設(shè)計(jì)的好壞直接決定了集群系統(tǒng)的性能與效率,設(shè)計(jì)不好的算法,不但不能有效緩解集群的負(fù)載不平衡狀況,還可能由于負(fù)載信息收集、進(jìn)程的動(dòng)態(tài)調(diào)度增加額外通信、
收稿日期:2014-06-05策劃、連接等開銷,增加系統(tǒng)的響應(yīng)時(shí)間。負(fù)載初始設(shè)置即負(fù)載分擔(dān)算法的主要任務(wù)是如何理智的選擇下一個(gè)集群節(jié)點(diǎn)然后決定將新的服務(wù)請(qǐng)求轉(zhuǎn)發(fā)給它。
針對(duì)不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,LVS負(fù)載均衡調(diào)度可實(shí)現(xiàn)如下幾種負(fù)載調(diào)度算法(網(wǎng)絡(luò)管理員也可以根據(jù)不同的應(yīng)用情況選擇最佳的算法):
輪轉(zhuǎn)調(diào)度算法
加權(quán)輪轉(zhuǎn)調(diào)度算法
最小連接調(diào)度算法
加權(quán)最小連接調(diào)度算法
2.2集群管理
LVS集群包括4個(gè)進(jìn)程、1個(gè)配置文件和1個(gè)用戶界面。具體如下:
pulse進(jìn)程,用于開啟集群服務(wù);
nanny進(jìn)程,用于監(jiān)視服務(wù)器的負(fù)載以及是否可用。當(dāng)節(jié)點(diǎn)或進(jìn)程失敗后,會(huì)在LVS中寫一條警告記錄并移去一條規(guī)則。因此調(diào)度器能自動(dòng)掩蓋進(jìn)程或服務(wù)器的失敗,當(dāng)故障恢復(fù)后,又可重新提供服務(wù)[3];
Ipvsadm進(jìn)程,用于更新路由列表;
LVS進(jìn)程,通過調(diào)用Ipvsadm進(jìn)程進(jìn)行管理,包括添加,刪除路由列表;
配置文件etc/lvscf,為所有進(jìn)程提供配置參數(shù);
用戶界而piranha,可方便地用于配置和管理服務(wù)器集群。
3Linux下負(fù)載均衡系統(tǒng)的建立
在集群系統(tǒng)環(huán)境中,設(shè)置主從調(diào)度器各1臺(tái)、服務(wù)器3臺(tái),其中每個(gè)調(diào)度器需要雙網(wǎng)絡(luò)適配器,其中一個(gè)連接公共網(wǎng)絡(luò),另一個(gè)連接內(nèi)部網(wǎng)絡(luò)。內(nèi)部網(wǎng)絡(luò)由調(diào)度器和3臺(tái)服務(wù)器組成,而服務(wù)器可以是任意的硬件平臺(tái),運(yùn)行任意的操作系統(tǒng)。
3.1集群的配置
3.1集群的配置
在調(diào)度器雙網(wǎng)卡中,eth0與外部網(wǎng)絡(luò)相連,從網(wǎng)絡(luò)管理員處申請(qǐng)1個(gè)IP地址作為虛擬IP地址,這里使用的是21.156.192.158,eth1與內(nèi)部服務(wù)器子網(wǎng)相連,分配IP地址192.168.1.1,并偽裝為192.168.1.254。在服務(wù)器上分配IP地址并設(shè)置默認(rèn)網(wǎng)關(guān)為192.168.1.254;
在調(diào)度器上安裝linuxRedHat6.1以及集群軟件。3臺(tái)服務(wù)器提供Web服務(wù),為了驗(yàn)證負(fù)載被均衡到3臺(tái)服務(wù)器上,將它們的Web主頁設(shè)置為不一樣,根據(jù)主頁的顯小,可知連接的是哪一臺(tái)服務(wù)器;
在調(diào)度器上定義包過濾規(guī)則,使其能夠?qū)P包進(jìn)行偽裝并轉(zhuǎn)發(fā):lpchains一Aforward-jMASQ-s192.168.1.0/24-d0.0.0.0/0
編輯/etc/lvscf配置文件,選擇輪轉(zhuǎn)調(diào)度算法,在調(diào)度器上用命令/etc/rcd/init.d/pulse開啟虛擬服務(wù)。
3.2系統(tǒng)測試
用瀏覽器訪問21.156.192158,通過對(duì)瀏覽器的刷新,可以看到3個(gè)不同的主頁依次出現(xiàn),從而有效證明了訪問的負(fù)載被分擔(dān)到3臺(tái)不同的服務(wù)器上。
接下來進(jìn)一步實(shí)驗(yàn),為3臺(tái)服務(wù)器配置相同的Web頁面和MySQl數(shù)據(jù)庫系統(tǒng)。當(dāng)連續(xù)提交記錄檢索時(shí),速度明顯高于單機(jī)串行檢索速度的總和;
當(dāng)主調(diào)度器停機(jī)時(shí),從調(diào)度器將自動(dòng)接管負(fù)載的平衡服務(wù)。
最后,用網(wǎng)絡(luò)命令對(duì)主頻為100MHz,內(nèi)存為32M的主調(diào)度器進(jìn)行了簡單的負(fù)載測試。當(dāng)IP包的大小為64KB時(shí),調(diào)度器對(duì)IP包的處理平均延時(shí)為10.4u/s,由此可算出它的最大負(fù)載能力為6.15MB/S。假設(shè)服務(wù)器的平均流量為600KB/s,調(diào)度器能對(duì)10臺(tái)服務(wù)器進(jìn)行管理。
3.3結(jié)果分析
基于IP層負(fù)載平衡調(diào)度的操作是在操作系統(tǒng)核心空間中完成的,它的調(diào)度開銷很小,所以它能調(diào)度相當(dāng)數(shù)量的服務(wù)器,一般不會(huì)成為系統(tǒng)的瓶頸。當(dāng)整個(gè)系統(tǒng)的負(fù)載超過目前所有節(jié)點(diǎn)的處理能力時(shí),可以通過增加服務(wù)器來滿足不斷增長的請(qǐng)求負(fù)載。由于對(duì)大多數(shù)服務(wù)網(wǎng)絡(luò)來說,節(jié)點(diǎn)與節(jié)點(diǎn)之間不存在很強(qiáng)的相關(guān)性,所以整個(gè)系統(tǒng)的性能可以隨著服務(wù)器池中的節(jié)
從LVS原理和上述實(shí)驗(yàn)也可以看出,調(diào)度器有可能成為系統(tǒng)單一的失效點(diǎn),為了防止它的失效,建立了調(diào)度器的備份。2個(gè)心跳進(jìn)程(Heart-beatDaemon)分別在主、從調(diào)度器上運(yùn)行,他們通過串口線和UDP等心跳線來相互匯報(bào)各自的狀態(tài)信息。當(dāng)從調(diào)度器不能聽到主調(diào)度器的心跳時(shí),從調(diào)度器會(huì)通過ARP欺騙來接管主調(diào)度器的工作并提供負(fù)載調(diào)度服務(wù)。當(dāng)主調(diào)度器恢復(fù)時(shí),將自動(dòng)變成從調(diào)度器。在實(shí)驗(yàn)中,僅簡單地通過網(wǎng)絡(luò)將主從調(diào)度器句_聯(lián),可以實(shí)現(xiàn)由主至從的自動(dòng)切換,而不能實(shí)現(xiàn)主調(diào)度器故障恢復(fù)后到從調(diào)度器的切變。
4結(jié)語
集群系統(tǒng)的優(yōu)勢在于硬件和軟件的冗余。通過監(jiān)測節(jié)點(diǎn)、失敗的進(jìn)程,重新正確地配置系統(tǒng),使工作能被集群中的其余節(jié)點(diǎn)接管,從而得到高可用的集群系統(tǒng)。采用LVS來實(shí)現(xiàn)負(fù)載均衡,它最大地發(fā)揮了網(wǎng)絡(luò)和PC機(jī)的優(yōu)勢,帶來了可觀的性能,是一種簡單快捷而目_經(jīng)濟(jì)高效的方法,是電子政務(wù)/電子商務(wù)中可靠的服務(wù)解決方案。
20211221_61c1e12a3e729__基于Linux的負(fù)載均衡技術(shù)