用Forefront管理Web服務(wù)器負(fù)載均衡
當(dāng)Web服務(wù)器的用戶數(shù)量比較多時(shí),通過Web服務(wù)器負(fù)載均衡來提高用戶的訪問性能,是一個(gè)比較常用的手段。如下圖所示。可以在企業(yè)中同時(shí)設(shè)置兩臺(tái)或者兩臺(tái)以上的Web服務(wù)器,從而實(shí)現(xiàn)在服務(wù)期之間負(fù)載均衡。如此的話,當(dāng)有一個(gè)用戶訪問某個(gè)網(wǎng)頁時(shí),系統(tǒng)會(huì)自動(dòng)挑選一臺(tái)比較空閑的服務(wù)器來應(yīng)對用戶的請求。現(xiàn)在主要的關(guān)鍵點(diǎn)是,由誰來確定,這個(gè)訪問者應(yīng)該連接到哪一臺(tái)服務(wù)器呢?給用戶選擇恰當(dāng)?shù)姆?wù)器,不僅可以提高用戶的訪問性能,而且還可以提高數(shù)據(jù)的安全性。
一、可以借助Forefront來充當(dāng)裁判的角色
在搭建服務(wù)器負(fù)載均衡環(huán)境時(shí),很重要的一個(gè)問題就是如何來確定哪一臺(tái)服務(wù)器比較空間,或者說用戶該連接在那一臺(tái)服務(wù)器上?雖然現(xiàn)在不少的服務(wù)器軟件都帶有這個(gè)功能,但是如果采用Forefront安全網(wǎng)關(guān)產(chǎn)品的話,還能夠帶來一些額外的安全收益。
如現(xiàn)在以上兩臺(tái)Web服務(wù)器,雖然是為了實(shí)現(xiàn)負(fù)載均衡來設(shè)置的。但是兩臺(tái)服務(wù)器有主次之別。如Web服務(wù)器1是主服務(wù)器,用戶不僅可以在這臺(tái)服務(wù)器上進(jìn)行查詢,而且還可以更新相關(guān)的數(shù)據(jù)。而對于Web服務(wù)器來說,其是輔助查詢,一般用戶只能夠查詢,而不能夠更新。此時(shí)為了安全起見,顯然會(huì)對訪問Web服務(wù)器1的用戶進(jìn)行限制。如企業(yè)內(nèi)部的用戶,只能夠訪問Web服務(wù)器1。而對于外部用戶,優(yōu)先訪問的是Web服務(wù)器2。當(dāng)Web服務(wù)器2比較繁忙時(shí),才允許外部用戶訪問Web服務(wù)器1。此時(shí)顯然不是簡單的Web服務(wù)器負(fù)載均衡可以實(shí)現(xiàn)的。要完成這個(gè)需求的話,必須要借助Forefront的幫助。從而在性能與安全之間達(dá)到一個(gè)均衡。
如上圖所示,在Forefront安全網(wǎng)關(guān)的幫助下,管理員在發(fā)布執(zhí)行相同角色的Web服務(wù)器時(shí)(即服務(wù)器負(fù)載均衡),可以控制各個(gè)服務(wù)器之間的復(fù)雜均衡(即可以是完全的負(fù)載均衡,也可以是有條件的負(fù)載均衡),從而實(shí)現(xiàn)入站訪問的高可用性,并提高Web服務(wù)器的安全與性能。#p#
二、Forefront服務(wù)器負(fù)載均衡的主要實(shí)現(xiàn)方式
Forefront能夠確保負(fù)載均衡在無需中斷當(dāng)前端點(diǎn)連接的情況下在可用Web服務(wù)器之間平均分布請求。這是微軟官方文檔上的一句原話。其實(shí)將這句話進(jìn)行分解,可以找到兩個(gè)關(guān)鍵點(diǎn)。一是在不用斷開當(dāng)前連接的情況下實(shí)現(xiàn)Web服務(wù)器之間的轉(zhuǎn)換。二是Web服務(wù)器之間平均分布請求這是一個(gè)相對的概念。換句話說,不可能是多臺(tái)服務(wù)器的負(fù)荷量是相等的。而是可以根據(jù)一定的規(guī)則進(jìn)行調(diào)整。另外Forefront還可以檢測脫機(jī)的服務(wù)器,并實(shí)現(xiàn)故障轉(zhuǎn)移等相關(guān)的工作。在這里筆者結(jié)合自己的工作靜態(tài),談?wù)勂浞?wù)器負(fù)載均衡的主要實(shí)現(xiàn)方式。筆者認(rèn)為,在了解這些主要實(shí)現(xiàn)方式的時(shí)候,各位讀者主要關(guān)注其相同點(diǎn)與差異。因?yàn)樵诟魑蛔x者自己配制時(shí),需要根據(jù)企業(yè)的實(shí)際情況來選擇合適自己的實(shí)現(xiàn)方式。總的來說,F(xiàn)orefront的Web服務(wù)器發(fā)布負(fù)載均衡的配置難度并不大。其主要的難點(diǎn)還在于選擇合適企業(yè)的實(shí)現(xiàn)方式。
在Forefront安全網(wǎng)關(guān)中,關(guān)于Web負(fù)載均衡主要有三種實(shí)現(xiàn)方式,分別為基于源IP的負(fù)載均衡、機(jī)遇Cookie的負(fù)載均衡和循環(huán)機(jī)制。在后續(xù)的內(nèi)容中,筆者會(huì)對這三種方式進(jìn)行分析,并舉例說明其主要的適用場合。希望這些內(nèi)容能夠?qū)Ω魑贿x擇合適的實(shí)現(xiàn)方式有所幫助。
***種方式是基于IP的負(fù)載平衡或者IP關(guān)聯(lián)。簡單的說,這就是將客戶端的IP地址與服務(wù)器相關(guān)聯(lián)。如筆者在文章一開始就提到了一個(gè)案例。雖然兩個(gè)服務(wù)器之間的內(nèi)容是相同的,但是在權(quán)限上可能有所差別。此時(shí)可以將某些特定的客戶端IP地址進(jìn)行指定,其可以優(yōu)先訪問哪一臺(tái)服務(wù)器,或者只允許訪問哪一臺(tái)服務(wù)器。這種方式往往有安全方面的考慮。不過需要注意的是,這種方式并不支持所有的服務(wù)器負(fù)載均衡。如根據(jù)筆者的了解,OutlooK客戶端就不支持這種方式。為此如果需要采用這種負(fù)載均衡的實(shí)現(xiàn)手段,管理員一定要事先確認(rèn),所采取的應(yīng)用能夠支持這種方式。
第二種方式是基于Cookie的負(fù)載平衡或這關(guān)聯(lián)。簡單的說,這就是指用戶會(huì)話語服務(wù)器進(jìn)行關(guān)聯(lián)。這種方式有一個(gè)特點(diǎn),即當(dāng)重新啟動(dòng)Web服務(wù)器時(shí),會(huì)話關(guān)聯(lián)仍然可以提供可靠的關(guān)聯(lián)。或者說,F(xiàn)orefront 安全網(wǎng)關(guān)可以確保用戶在一次路由到特定應(yīng)用服務(wù)器后繼續(xù)使用這個(gè)服務(wù)器。舉一個(gè)簡單的例子。如上圖所示,現(xiàn)在某個(gè)用戶已經(jīng)連接到了Web服務(wù)器A。此時(shí)由于某種特殊情況,管理員將Web服務(wù)器A重新啟動(dòng)了。在重新啟動(dòng)后,會(huì)話關(guān)聯(lián)仍然可以提供可靠的關(guān)聯(lián)。為此在一些特定的應(yīng)用中,往往建立采用會(huì)話關(guān)聯(lián)。如某些應(yīng)用程序,特別強(qiáng)調(diào)會(huì)話的重要性。如淘寶網(wǎng)站。在淘寶網(wǎng)中有購物車的概念。此時(shí)即使用戶在不同的網(wǎng)頁之間進(jìn)行切換,但是購物車中的內(nèi)容能夠保證是自己剛才采購的。這主要就是會(huì)話在其中起作用。對于類似的應(yīng)用,就需要采用這種機(jī)遇Cookie的負(fù)載平衡或者關(guān)聯(lián)。
第三種方式是循環(huán)機(jī)制。這個(gè)機(jī)制主要是在Web服務(wù)器成員之間平均分布來自不同的IP地址的請求。循環(huán)機(jī)制的主要特點(diǎn),是能夠確保在聯(lián)機(jī)服務(wù)器之間平均分布針對由Web應(yīng)用程序的用戶請求。而且這種分布機(jī)制在故障轉(zhuǎn)移期間也能夠保持。而且當(dāng)發(fā)生故障轉(zhuǎn)移時(shí),系統(tǒng)能夠檢測沒有響應(yīng)的服務(wù)器,并在可用服務(wù)器之間進(jìn)行分布均衡。簡單的說,循環(huán)機(jī)制其會(huì)循環(huán)的檢查服務(wù)器的可用性。當(dāng)發(fā)現(xiàn)用戶連接的某臺(tái)服務(wù)器不可用或者非常繁忙時(shí),會(huì)馬上中斷用戶的連接,并將其連接到可用的服務(wù)器上。而不管用戶當(dāng)前的會(huì)話狀態(tài)如何。這種方式有缺陷也有優(yōu)點(diǎn)。缺陷是用戶當(dāng)前會(huì)話的相關(guān)信息(如果沒有保存)則可能會(huì)丟失。因?yàn)榇藭r(shí)相關(guān)信息還是保存在內(nèi)存中。當(dāng)會(huì)話強(qiáng)制關(guān)閉時(shí),相關(guān)信息就會(huì)遺失。而優(yōu)點(diǎn)是能夠提供更高的性能。如現(xiàn)在某個(gè)用戶在訪問某個(gè)網(wǎng)頁,其是連接在Web服務(wù)器1訪問的。當(dāng)其轉(zhuǎn)向到另外一個(gè)網(wǎng)頁時(shí),此時(shí)這個(gè)網(wǎng)頁的訪問量非常的大,基本上都集中在服務(wù)器1。而這個(gè)網(wǎng)頁的Web服務(wù)器2訪問量則比較小。在這種情況下,如果采用循環(huán)機(jī)制的話,會(huì)將這個(gè)客戶的請求重新定位到服務(wù)器2。目的就是為了給這個(gè)用戶提供更好的性能。可是問題是,現(xiàn)在換了一個(gè)服務(wù)器,就相當(dāng)于新建了一個(gè)會(huì)話 ,原先的會(huì)話也就中斷了。其實(shí)這種情況在實(shí)際工作中也比較多建。如我們打1000號(hào)的時(shí)候,剛開始可能連接的是湖南長沙的站點(diǎn)(可能這個(gè)站點(diǎn)比較空)。然后再交接線員轉(zhuǎn)接到1000號(hào)的其他部門,此時(shí)這個(gè)1000號(hào)站點(diǎn)可能就不是長沙了(當(dāng)轉(zhuǎn)接的目標(biāo)部門比較忙時(shí)就會(huì)自動(dòng)轉(zhuǎn)接到其它部門)。此時(shí)由于相關(guān)信息比較獨(dú)立,即使當(dāng)前會(huì)話中斷了,丟失相關(guān)信息影響也不是很大。或者說,相對于漫長的等待時(shí)間來說,這個(gè)當(dāng)前會(huì)話信息的丟失所造成的影響可以忽略不計(jì)。
可見不同的實(shí)現(xiàn)方式其目的雖然相同,但是在細(xì)節(jié)上仍然有很大的差異。這導(dǎo)致其應(yīng)用場合也有所不同。總之,基于IP的負(fù)載平衡或者基于Cookies的負(fù)載均衡,其主要的特點(diǎn)是確保用戶在一次路由到特定應(yīng)用服務(wù)器后(如Web服務(wù)器1)后續(xù)訪問繼續(xù)路由到這個(gè)服務(wù)器。而循環(huán)機(jī)制的話,則可能會(huì)因?yàn)樘囟ㄙY源訪問量的變化,在可用的Web服務(wù)器之間進(jìn)行不停的轉(zhuǎn)換。抓住這兩個(gè)主要的差異點(diǎn),然后結(jié)合企業(yè)的實(shí)際情況,來判斷到底該采用哪種實(shí)現(xiàn)方式。
【編輯推薦】