成孝俊
摘要:在Windows Server 中搭建Web Farm網(wǎng)絡(luò)負(fù)載平衡服務(wù)器時(shí),遇到了兩個(gè)難點(diǎn):第一,使用單播模式創(chuàng)建群集時(shí),與群集IP地址相同網(wǎng)段的其他主機(jī)無(wú)法訪問(wèn)群集IP地址;第二,不管是單播還是多播模式,與群集IP地址在不同網(wǎng)段的主機(jī)都無(wú)法訪問(wèn)群集IP地址。在尋求解決方案的過(guò)程中,發(fā)現(xiàn)很多教材都沒有解決這個(gè)問(wèn)題,都只是簡(jiǎn)單的介紹如何搭建網(wǎng)絡(luò)負(fù)載平衡的環(huán)境,并提供操作成功的界面。但是,當(dāng)按照教材所提供的操作方法時(shí),客戶端主機(jī)卻無(wú)法訪問(wèn)群集IP地址。該文討論的內(nèi)容將主要是如何在技術(shù)上解決群集IP地址無(wú)法訪問(wèn)的問(wèn)題,以保證Web Farm網(wǎng)絡(luò)負(fù)載實(shí)驗(yàn)的成功實(shí)施。
關(guān)鍵詞:群集;負(fù)載平衡;群集IP地址;靜態(tài)路由
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)02-0203-02
1 基本概念
1.1 什么是群集
群集是指一組服務(wù)器,這些服務(wù)器通過(guò)彼此的協(xié)同作業(yè),對(duì)外提供一個(gè)相同的服務(wù)或應(yīng)用程序,以提升服務(wù)或應(yīng)用程序的可用性、可靠性和可擴(kuò)展性。使用群集的目的是,當(dāng)群集內(nèi)的某個(gè)服務(wù)器出了故障無(wú)法訪問(wèn)時(shí),服務(wù)請(qǐng)求會(huì)轉(zhuǎn)給群集內(nèi)的其它節(jié)點(diǎn),從而可以實(shí)現(xiàn)不中斷的服務(wù)。
1.2 什么是負(fù)載平衡
Windows Server 中的網(wǎng)絡(luò)負(fù)載平衡(NLB)功能可以增強(qiáng)Internet服務(wù)器應(yīng)用程序(如在Web、FTP、防火墻、代理、虛擬專用網(wǎng)絡(luò)以及其他執(zhí)行關(guān)鍵任務(wù)的服務(wù)器上使用的應(yīng)用程序)的可用性和可伸縮性。通過(guò)將運(yùn)行Windows Server 2008各種服務(wù)的兩臺(tái)或多臺(tái)計(jì)算機(jī)的資源組合到單個(gè)虛擬群集中,NLB便可以提供Web服務(wù)器和其他執(zhí)行關(guān)鍵任務(wù)服務(wù)器所需的可靠性和性能。
1.3 負(fù)載平衡工作原理
如圖1所示,每一個(gè)群集都是由若干群集節(jié)點(diǎn)組成的。如圖1中,群集節(jié)點(diǎn)NLB1與群集節(jié)點(diǎn)NLB2都有一個(gè)自身的靜態(tài)IP地址,在創(chuàng)建NLB群集后會(huì)創(chuàng)建一臺(tái)虛擬的群集主機(jī),并有一個(gè)虛擬的群集IP地址與之對(duì)應(yīng),群集外的主機(jī)通過(guò)這個(gè)群集IP地址訪問(wèn)該群集中的服務(wù)。雖然每個(gè)群集外的主機(jī)在訪問(wèn)群集中的服務(wù)時(shí)使用的是相同的群集IP地址,但每個(gè)客戶端主機(jī)訪問(wèn)的實(shí)際節(jié)點(diǎn)卻可能是NLB1或者NLB2。簡(jiǎn)單的說(shuō),群集中的每臺(tái)主機(jī)分擔(dān)了群集提供的服務(wù)。
2 搭建網(wǎng)絡(luò)負(fù)載平衡實(shí)驗(yàn)環(huán)境
本文以Windows Server 2008為例,以多網(wǎng)卡單播模式創(chuàng)建一個(gè)Web Farm網(wǎng)絡(luò)負(fù)載平衡實(shí)驗(yàn)的群集。實(shí)驗(yàn)的完整拓?fù)鋱D如圖2所示。
實(shí)驗(yàn)環(huán)境說(shuō)明:
1)主機(jī)DC1和DC2中都安裝網(wǎng)絡(luò)負(fù)載平衡服務(wù),分別包含兩塊網(wǎng)卡,其中網(wǎng)卡172.16.10.101和172.16.10.102用作群集接口,192.168.1.11和192.168.1.12作為群集主機(jī)間的通信接口。群集IP地址為192.168.1.88。
2)主機(jī)DC1和DC2中都安裝IIS服務(wù),IIS站點(diǎn)都綁定到群集IP地址192.168.1.88,站點(diǎn)首頁(yè)分別顯示“Web From DC1!”和“Web From DC2!”,以區(qū)分最終訪問(wèn)的頁(yè)面是來(lái)自于哪一個(gè)IIS服務(wù)器。
3)第三臺(tái)服務(wù)器承擔(dān)LAN路由功能,實(shí)現(xiàn)192.168.1.0網(wǎng)段和192.168.2.0網(wǎng)段的互通。
本文以解決實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載平衡實(shí)驗(yàn)中的難點(diǎn)為主,相關(guān)服務(wù)的安裝與配置不作介紹。創(chuàng)建網(wǎng)絡(luò)負(fù)載平衡群集的大致步驟如下:
1)在主機(jī)DC1的“網(wǎng)絡(luò)負(fù)載平衡管理器”中,以172.16.10.101接口作為群集節(jié)點(diǎn)創(chuàng)建群集,設(shè)置群集IP地址為192.168.1.88,并設(shè)置群集操作方式為“單?!保?/p>
2)在主機(jī)DC1的“網(wǎng)絡(luò)負(fù)載平衡管理器”中,將主機(jī)DC2添加到群集中,選擇172.16.10.102接口作為群集節(jié)點(diǎn)的接口;
3)經(jīng)過(guò)上述操作,在兩臺(tái)主機(jī)的“網(wǎng)絡(luò)負(fù)載平衡管理器”中可以查看創(chuàng)建好的群集。
3 群集IP地址連通性測(cè)試
3.1 同網(wǎng)段測(cè)試
1)測(cè)試描述:從與群集IP地址同網(wǎng)段的客戶端主機(jī)(如192.168.1.20),使用ping命令對(duì)群集IP地址進(jìn)行連通性測(cè)試。測(cè)試結(jié)果表明,192.168.1.0網(wǎng)段中,除群集節(jié)點(diǎn)中的同網(wǎng)段IP(如本實(shí)驗(yàn)中192.168.1.11、192.168.1.12)可以訪問(wèn)群集IP地址外,其他主機(jī)都無(wú)法訪問(wèn)群集IP地址。
2)問(wèn)題解決方法:由于使用了“單播”模式,每個(gè)群集節(jié)點(diǎn)的群集接口就有了一個(gè)相同的MAC地址,即群集MAC地址。如圖3所示,打開群集接口的屬性,查看“配置”屬性,在“高級(jí)”選項(xiàng)卡中找到“本地管理的地址”,便可以看到群集MAC地址。只要將“本地管理的地址”屬性值設(shè)置為“不存在”,就可以解決“從群集IP地址同網(wǎng)段的客戶端主機(jī)無(wú)法訪問(wèn)群集IP地址”的問(wèn)題。
3.2 跨網(wǎng)段測(cè)試
1)測(cè)試描述:從與群集IP地址不同網(wǎng)段的客戶機(jī)(如192.168.2.20),使用ping命令對(duì)群集IP地址進(jìn)行連通性測(cè)試。測(cè)試結(jié)果表明,雖然192.168.1.0網(wǎng)段與192.168.2.0網(wǎng)段是相通的(已經(jīng)由LAN路由實(shí)現(xiàn)),但192.168.2.0網(wǎng)段的主機(jī)無(wú)法訪問(wèn)群集IP地址192.168.1.88。
2)問(wèn)題解決方法:其實(shí),只要知道192.168.2.0網(wǎng)段的主機(jī)可以ping通192.168.1.11接口的原因,這個(gè)問(wèn)題也就解決了。在主機(jī)DC1中命令提示符中輸入route print命令,查看本地機(jī)器的路由表。
查看圖4路由表的第一條路由記錄,可以發(fā)現(xiàn)主機(jī)DC1可以從192.168.1.11接口、經(jīng)192.168.1.1網(wǎng)關(guān)訪問(wèn)任意網(wǎng)段。這條路由記錄就是192.168.2.20可以ping通192.168.1.11的原因。因此,為了解決我們遇到的問(wèn)題,只需要在本地路由表中添加一條靜態(tài)路由,允許來(lái)自于任意網(wǎng)段的數(shù)據(jù)經(jīng)網(wǎng)關(guān)192.168.1.1到達(dá)群集接口192.168.1.88就即可。
由于虛擬的群集接口是基于群集主機(jī)中參與群集的接口虛擬出來(lái)的,因此在訪問(wèn)虛擬群集接口192.168.1.88時(shí),需要使用到參與群集的接口172.16.10.101。在圖4中所示的接口列表中,根據(jù)每個(gè)網(wǎng)卡對(duì)應(yīng)的MAC地址確定其接口編號(hào)。本例中,主機(jī)DC1中參與群集的接口編號(hào)為13。使用route add命令在本地路由中添加這條靜態(tài)路由,命令代碼如下:
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 256 if 13
需要提醒是的是,在每一個(gè)群集節(jié)點(diǎn)中,都需要添加這樣一條從群集接口到任意網(wǎng)段的靜態(tài)路由,否則這個(gè)群集主機(jī)將不可訪問(wèn),這個(gè)群集節(jié)點(diǎn)也就不能夠?qū)蛻舳颂峁┓?wù)。
4 實(shí)驗(yàn)WEB負(fù)載平衡
在搭建好網(wǎng)絡(luò)負(fù)載平衡服務(wù)并確認(rèn)同網(wǎng)段和不同網(wǎng)段都可以訪問(wèn)群集IP地址后,就可以通過(guò)綁定到WEB站點(diǎn)的群集IP地址訪問(wèn)使用WEB服務(wù)。
在本實(shí)驗(yàn)中,不同的客戶端主機(jī)訪問(wèn)同一個(gè)WEB站點(diǎn)(http://192.168.1.88)時(shí)顯示的頁(yè)面內(nèi)容來(lái)自于兩臺(tái)不同的IIS服務(wù)器,因?yàn)閷?duì)的請(qǐng)群集IP地址的訪問(wèn)請(qǐng)被平衡分流到不同的IIS服務(wù)器。如果有的客戶端能根據(jù)群集IP地址訪問(wèn)WEB站點(diǎn),有的客戶端不能訪問(wèn)WEB站點(diǎn),則很有可能是某個(gè)群集節(jié)點(diǎn)中沒有添加靜態(tài)路由。
5 結(jié)束語(yǔ)
本文通過(guò)對(duì)網(wǎng)絡(luò)負(fù)載平衡實(shí)驗(yàn)過(guò)程中出現(xiàn)的問(wèn)題產(chǎn)生的原因進(jìn)行分析,從技術(shù)上解決了群集IP地址無(wú)法訪問(wèn)的問(wèn)題,從而實(shí)現(xiàn)Web Farm網(wǎng)絡(luò)負(fù)載平衡。解決了這個(gè)問(wèn)題,就可以實(shí)現(xiàn)其他各種服務(wù)和應(yīng)用程序的網(wǎng)絡(luò)負(fù)載平衡功能。
參考文獻(xiàn):
[1] 鄧文達(dá), 易月娥. Windows Server 2012網(wǎng)絡(luò)管理項(xiàng)目教程[M]. 北京: 人民郵電出版社, 2013.
[2] 戴有煒. Windows Server 2012網(wǎng)絡(luò)管理與架構(gòu)[M]. 北京: 清華大學(xué)出版社, 2014.
[3] 郝貴發(fā). NAT技術(shù)在負(fù)載均衡中的應(yīng)用[J]. 網(wǎng)管員世界, 2011(14).
[4] 買京京. Web服務(wù)器集群負(fù)載均衡技術(shù)研究[D]. 太原: 中北大學(xué), 2008.
[5] 微軟網(wǎng)站. 網(wǎng)絡(luò)負(fù)載平衡[EB/OL].https://technet.microsoft.com/zh-cn/library/cc770558.aspx.