軟考網(wǎng)工之負(fù)載均衡詳解二
運(yùn)行Windows 2000的單一計(jì)算機(jī)可以提供有限級(jí)別的服務(wù)器可靠性和可伸縮性。但是,通過將兩個(gè)或兩個(gè)以上運(yùn)行Windows 2000 高級(jí)服務(wù)器的主機(jī)連成群集,網(wǎng)絡(luò)負(fù)載均衡就能夠提供關(guān)鍵任務(wù)服務(wù)器所需的可靠性和性能。
每個(gè)主機(jī)運(yùn)行一個(gè)所需服務(wù)器程序的獨(dú)立拷貝,諸如Web、FTP、Telnet或e-mail服務(wù)器程序。對(duì)于某些服務(wù)(如運(yùn)行在Web 服務(wù)器上的那些服務(wù))而言,程序的一個(gè)拷貝運(yùn)行在群集內(nèi)所有的主機(jī)上,而網(wǎng)絡(luò)負(fù)載均衡則將工作負(fù)載在這些主機(jī)間進(jìn)行分配。對(duì)于其他服務(wù)(例如e- mail)只有一臺(tái)主機(jī)處理工作負(fù)載,針對(duì)這些服務(wù),網(wǎng)絡(luò)負(fù)載均衡允許網(wǎng)絡(luò)通訊量流到一個(gè)主機(jī)上,并在該主機(jī)發(fā)生故障時(shí)將通訊量移至其它主機(jī)。
網(wǎng)絡(luò)負(fù)載均衡配置概述
網(wǎng)絡(luò)負(fù)載均衡是Windows 2000的一個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)程序。它的操作對(duì)TCP/IP網(wǎng)絡(luò)棧而言是透明的。
為確保網(wǎng)絡(luò)性能達(dá)到最優(yōu),網(wǎng)絡(luò)負(fù)載均衡通常使用一個(gè)網(wǎng)絡(luò)適配器來處理客戶到群集的通訊量,而其它對(duì)服務(wù)器的網(wǎng)絡(luò)通訊量則經(jīng)由一個(gè)單獨(dú)網(wǎng)絡(luò)適配器。然而,第二個(gè)網(wǎng)絡(luò)適配器是不需要來自負(fù)載均衡服務(wù)器應(yīng)用的數(shù)據(jù)庫訪問某些服務(wù)器程序需要訪問由客戶請(qǐng)求來更新的數(shù)據(jù)庫。當(dāng)這些程序的負(fù)載在群集內(nèi)得到均衡分配時(shí),相關(guān)的更新工作則應(yīng)保持同步狀態(tài)。每個(gè)主機(jī)均使用一個(gè)本地、獨(dú)立的數(shù)據(jù)庫拷貝,而該數(shù)據(jù)庫在必要時(shí)可脫機(jī)并入。另一種方法是,群集主機(jī)能夠共享對(duì)一個(gè)獨(dú)立的網(wǎng)絡(luò)數(shù)據(jù)庫服務(wù)器的訪問。也可以組合使用這些方法。例如,靜態(tài)Web網(wǎng)頁能夠在全部群集服務(wù)器間進(jìn)行復(fù)制,以確??焖僭L問和全面容錯(cuò)。但是,數(shù)據(jù)庫訪問請(qǐng)求將轉(zhuǎn)發(fā)至為多個(gè)Web服務(wù)器進(jìn)行更新處理的公共數(shù)據(jù)庫服務(wù)器。
某些關(guān)鍵任務(wù)程序可能需要使用高度可用的數(shù)據(jù)庫引擎以確保全面容錯(cuò)。逐漸地,具有群集識(shí)別能力的數(shù)據(jù)庫軟件將得到部署,用以在整個(gè)群集模式中提供具有高度可用性與可伸縮性的數(shù)據(jù)庫訪問。Microsoft SQL Server就是一個(gè)例子,它能夠使用群集服務(wù)功能以雙節(jié)點(diǎn)方式進(jìn)行部署。群集服務(wù)可確保在一個(gè)節(jié)點(diǎn)發(fā)生故障的情況下,剩余的節(jié)點(diǎn)將承擔(dān)起故障電腦的職責(zé),這樣,就能夠?yàn)镸icrosoft SQL Server 客戶提供近乎連續(xù)的服務(wù)。由于兩臺(tái)電腦共享一個(gè)公共磁盤子系統(tǒng),則上述功能是可以實(shí)現(xiàn)的。
注釋
通過討論在以下兩個(gè)群集解決方案之間進(jìn)行比選是十分重要的。第一方案,網(wǎng)絡(luò)負(fù)載均衡主要是分配引入的傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)通訊量;加入這一解決方案的計(jì)算機(jī)形成一種群集。第二方案,群集服務(wù)主要是提供從一臺(tái)計(jì)算機(jī)到另一計(jì)算機(jī)的故障應(yīng)急服務(wù);加入這一解決方案的計(jì)算機(jī)形成另一種群集。網(wǎng)絡(luò)負(fù)載均衡群集通常運(yùn)行Web服務(wù)器程序。群集服務(wù)通常運(yùn)行數(shù)據(jù)庫程序(當(dāng)與網(wǎng)絡(luò)負(fù)載均衡聯(lián)合使用時(shí))。通過將兩個(gè)群集連接在一起以互補(bǔ)方式發(fā)揮作用,用戶創(chuàng)建了全面群集解決方案。
網(wǎng)絡(luò)負(fù)載均衡如何工作
網(wǎng)絡(luò)負(fù)載均衡為共同工作且使用兩個(gè)或兩個(gè)以上主機(jī)群集的Web服務(wù)器提供了高度可用性和可伸縮性。因特網(wǎng)客戶使用單一的IP地址(或一個(gè)多主主機(jī)的一組地址)訪問群集。客戶不能將單一服務(wù)器從群集中區(qū)分開來。服務(wù)器程序不能識(shí)別它們正運(yùn)行于一個(gè)群集中。但是,由于網(wǎng)絡(luò)負(fù)載均衡群集即使在群集主機(jī)發(fā)生故障的情況下仍能提供了不間斷的服務(wù),故而,它與運(yùn)行單一服務(wù)器程序的單一主機(jī)大相徑庭。與單一主機(jī)相比,群集還能對(duì)客戶需求做出更迅捷的反應(yīng)。
網(wǎng)絡(luò)負(fù)載均衡通過在主機(jī)發(fā)生故障或脫機(jī)的情況下將網(wǎng)絡(luò)通訊量重新指定給其它工作群集主機(jī)來提供高度的可用性。與脫機(jī)主機(jī)現(xiàn)存的連接雖然丟失,但因特網(wǎng)服務(wù)仍然處于可用狀態(tài)。在大多數(shù)情況下(例如,就Web服務(wù)器而言),客戶軟件會(huì)自動(dòng)重試發(fā)生故障的連接,而且,客戶僅需幾秒的延遲即可收到響應(yīng)。
網(wǎng)絡(luò)負(fù)載均衡通過在群集的一個(gè)或一個(gè)以上虛擬IP地址當(dāng)中分配引入的網(wǎng)絡(luò)通訊量來提供伸縮能力。群集中的主機(jī)于是對(duì)不同客戶請(qǐng)求做出響應(yīng),即使是來自同一客戶的多重請(qǐng)求也如是。例如,Web瀏覽器可能在單一Web網(wǎng)頁內(nèi)獲得群集內(nèi)不同主機(jī)處的多重映射。這就加速了處理過程并縮短了對(duì)客戶的響應(yīng)時(shí)間。 #p#
網(wǎng)絡(luò)負(fù)載均衡使在一個(gè)子網(wǎng)上的全部群集主機(jī)能夠?yàn)槿杭闹鱅P地址(以及多主主機(jī)上的額外IP地址)同時(shí)檢測引入的網(wǎng)絡(luò)通訊量。在每個(gè)群集主機(jī)上,網(wǎng)絡(luò)負(fù)載均衡驅(qū)動(dòng)程序充當(dāng)了一個(gè)介于群集適配器驅(qū)動(dòng)程序和TCP/IP棧之間的過濾器,以這種方式使主機(jī)能夠收到一部分引入的網(wǎng)絡(luò)通訊量。
網(wǎng)絡(luò)負(fù)載均衡使用全面分布式的算法來從統(tǒng)計(jì)意義上將引入的客戶映射到基于IP地址、端口和其它信息的群集主機(jī)上。在檢查收到的數(shù)據(jù)包時(shí),所有主機(jī)均同步執(zhí)行這種映射以迅速?zèng)Q定哪個(gè)主機(jī)應(yīng)處理該數(shù)據(jù)包。除非群集主機(jī)數(shù)量發(fā)生變化,該映射會(huì)保持不變。網(wǎng)絡(luò)負(fù)載均衡過濾算法在數(shù)據(jù)包處理程序方面要比在集中負(fù)載均衡程序方面高效得多,而這必須修改并重發(fā)數(shù)據(jù)包。這就使網(wǎng)絡(luò)負(fù)載均衡能夠提供高得多的聚集帶寬。通過直接在群集主機(jī)上運(yùn)行,網(wǎng)絡(luò)負(fù)載均衡的性能并不受某一代處理器或網(wǎng)絡(luò)技術(shù)的局限。
群集通訊量的分配
網(wǎng)絡(luò)負(fù)載均衡控制對(duì)從因特網(wǎng)客戶到群集內(nèi)選定主機(jī)的TCP與用戶數(shù)據(jù)報(bào)協(xié)議(UDP)通訊量的分配,做法如下:在配置了網(wǎng)絡(luò)負(fù)載平衡以后,對(duì)群集IP地址的引入客戶請(qǐng)求由群集內(nèi)的所有主機(jī)收到。網(wǎng)絡(luò)負(fù)載平衡在這些數(shù)據(jù)報(bào)到達(dá)TCP/IP協(xié)議軟件之前,就對(duì)這些數(shù)據(jù)報(bào)進(jìn)行過濾以指定TCP和UDP端口。網(wǎng)絡(luò)負(fù)載平衡只管理TCP/IP中TCP和UDP協(xié)議,并以逐端口方式控制它們的活動(dòng)。
除了流向指定端口的TCP和UDP通訊量之外,網(wǎng)絡(luò)負(fù)載均衡不控制任何引入的IP通訊量。網(wǎng)絡(luò)負(fù)載均衡不對(duì)網(wǎng)際控制報(bào)文協(xié)議 (ICMP)、網(wǎng)際組成員協(xié)議(IGMP)、地址解析協(xié)議(ARP)或其它IP協(xié)議進(jìn)行過濾。所有這些通訊量均不加修改地傳遞給在群集內(nèi)全部主機(jī)上的 TCP/IP協(xié)議軟件。因?yàn)橛辛薚CP/IP的穩(wěn)定性及其處理重復(fù)數(shù)據(jù)報(bào)的能力,其它協(xié)議就能夠在群集環(huán)境內(nèi)正確運(yùn)轉(zhuǎn)。可是,當(dāng)使用群集IP地址時(shí),你可能預(yù)期從特定的點(diǎn)到點(diǎn)TCP/IP程序(比如ping)中看到重復(fù)的響應(yīng)。這些程序能夠通過為每個(gè)主機(jī)使用專用的IP地址來避免這種情況的發(fā)生。
集中收斂
網(wǎng)絡(luò)負(fù)載均衡主機(jī)通過在群集內(nèi)定期交換組播或廣播消息來協(xié)調(diào)彼此間的活動(dòng)。這就使它們能夠監(jiān)控群集所處的狀態(tài)。當(dāng)群集所處狀況發(fā)生變化時(shí)(比如主機(jī)故障、脫離或加入群集),網(wǎng)絡(luò)負(fù)載均衡就會(huì)調(diào)用一個(gè)稱為集中收斂的處理過程,在這個(gè)處理過中,主機(jī)之間將交換消息以確定一個(gè)新的、持續(xù)的群集狀態(tài),并推舉一個(gè)具有最高優(yōu)先級(jí)的主機(jī)充當(dāng)新的缺省主機(jī)。當(dāng)群集的全部主機(jī)就新的群集狀態(tài)達(dá)成一致時(shí),它們就會(huì)將集中收斂的完成記入Windows 2000的事件日志。
在集中收斂期間,除非故障主機(jī)沒有收到服務(wù),主機(jī)將一如繼往地處理引入的網(wǎng)絡(luò)通訊量??蛻魧?duì)工作主機(jī)的請(qǐng)求是不受影響的。在集中收斂完成時(shí),故障主機(jī)的通訊量會(huì)重新分配給剩余主機(jī)。負(fù)載均衡通訊量將在剩余宿主間分配,從而達(dá)成特定的TCP或UDP端口間最大可能的負(fù)載均衡。如果一個(gè)主機(jī)添加到群集中,集中收斂會(huì)允許該主機(jī)接管處理端口的任務(wù),并由此使之具備最高的優(yōu)先級(jí);同時(shí),集中收斂還將使該主機(jī)分到它所應(yīng)負(fù)擔(dān)的負(fù)載均衡通訊量份額。群集擴(kuò)展不會(huì)影響正在進(jìn)行的群集操作,并且保證對(duì)因特網(wǎng)客戶和服務(wù)器程序而言是以透明方式實(shí)現(xiàn)的??墒牵诳蛻舻南嗨菩员贿x定的情況下,群集擴(kuò)展會(huì)影響到跨越多重TCP連接的客戶話路,這主要是因?yàn)樵谶B接之間可能將客戶映射到不同的群集主機(jī)上去了。
網(wǎng)絡(luò)負(fù)載均衡假定只要主機(jī)參加了群集宿主間的正常消息交換,那么,它就在群集內(nèi)處于正常運(yùn)轉(zhuǎn)狀態(tài)。如果其它主機(jī)在若干期間均未收到對(duì)消息交換的響應(yīng),它們就會(huì)啟動(dòng)一個(gè)集中收斂操作以重新分配先前由故障宿主承擔(dān)的負(fù)載。你能夠控制消息交換的周期和用來決定啟動(dòng)集中收斂操作的通信遺漏次數(shù)。以上兩者各自的默認(rèn)值分別為1000毫秒 (1秒)和5次。由于上述參數(shù)不常修改,因此,它們不能在"網(wǎng)絡(luò)負(fù)載均衡屬性"對(duì)話框中進(jìn)行設(shè)置。必要時(shí),這些參數(shù)可在系統(tǒng)注冊(cè)表中以手工方式加以調(diào)整。