孫光懿, 熊 杰
(1.天津音樂學(xué)院圖書信息中心,天津300171;2.黃岡師范學(xué)院物理與電信學(xué)院,湖北黃岡438000)
為使廣大師生方便快捷的獲得教學(xué)科研以及專業(yè)學(xué)習(xí)所需的西方宗教音樂資源,開發(fā)了西方宗教音樂資源檢索平臺。但是隨著用戶數(shù)的增加,單臺服務(wù)器的計算與數(shù)據(jù)處理能力已無法應(yīng)對如此巨大的訪問量,為有效解決這一問題,采用在校園網(wǎng)內(nèi)部署多臺應(yīng)用服務(wù)器并在出口路由器上應(yīng)用服務(wù)器負(fù)載均衡(Server Load Balancing,SLB)[1-3]技術(shù),實施服務(wù)器冗余和流量負(fù)載均衡的設(shè)計方案,這樣可使用戶請求的流量將由多臺服務(wù)器負(fù)責(zé)處理,不僅可以有效解決單臺服務(wù)器流量負(fù)載過重和發(fā)生單點故障的問題,而且還可以充分利用現(xiàn)有服務(wù)器資源,節(jié)省購買高性能服務(wù)器的經(jīng)費。西方宗教音樂資源檢索平臺實際運行在各真實服務(wù)器之中,對外呈現(xiàn)出的則是SLB虛擬服務(wù)器。另外出口路由器還可根據(jù)多種不同因素來配置服務(wù)器負(fù)載分擔(dān),在特殊情況下,可以指定同一臺服務(wù)器對用戶的請求做出響應(yīng)。例如當(dāng)使用文件傳輸協(xié)議FTP時,用戶必須與同一臺服務(wù)器進(jìn)行會話,才能完成文件的傳輸任務(wù)。
SLB可以看作是熱備份路由協(xié)議(Hot Standy Router Protocol,HSRP)協(xié)議的擴(kuò)展,屬于思科私有協(xié)議。主要應(yīng)用在思科3層網(wǎng)絡(luò)設(shè)備上,多用來實現(xiàn)服務(wù)器之間流量負(fù)載均衡[4-6]。SLB組可以由多臺服務(wù)器組成,但是虛擬服務(wù)器只能有1臺,(虛擬服務(wù)器可以看作是真實服務(wù)器的群集)虛擬服務(wù)器負(fù)責(zé)響應(yīng)客戶發(fā)起的訪問請求,再根據(jù)WRR或WLC負(fù)載均衡算法將數(shù)據(jù)包轉(zhuǎn)發(fā)到一臺或多臺真實服務(wù)器上,在這一過程中用戶只需知道虛擬服務(wù)器的IP地址即可完成對應(yīng)用系統(tǒng)的訪問,而無需知道真實服務(wù)器的IP地址,從而使真實服務(wù)器得到了有效的安全保護(hù)。另外應(yīng)用SLB技術(shù)還可以獲得如下好處:①可以增強(qiáng)應(yīng)用系統(tǒng)運行的可靠性,當(dāng)真實服務(wù)器發(fā)生故障無法響應(yīng)用戶的請求時,路由器可以立刻檢測到并不再向其轉(zhuǎn)發(fā)用戶請求數(shù)據(jù)包,直到這臺故障真實服務(wù)器能夠正常工作為止。響應(yīng)用戶請求的工作則由其他真實服務(wù)器來繼續(xù)完成,整個過程中用戶對應(yīng)用系統(tǒng)的訪問不會受到絲毫影響。②可以極大減輕系統(tǒng)管理員的工作負(fù)擔(dān),由于用戶只知道在2層網(wǎng)絡(luò)中存在的虛擬服務(wù)器,因此當(dāng)系統(tǒng)管理員對真實服務(wù)器進(jìn)行重新調(diào)整時,無需考慮當(dāng)前用戶的狀態(tài)。
(1)分派工作模式。在分派工作模式中,用戶數(shù)據(jù)包的目的IP地址為虛擬服務(wù)器的IP地址,當(dāng)運行SLB的路由器收到用戶數(shù)據(jù)包后,即按照某種負(fù)載均衡算法[7]將數(shù)據(jù)包轉(zhuǎn)發(fā)到真實服務(wù)器中,在此過程中并不改變數(shù)據(jù)包的目的地址。真實服務(wù)器為了響應(yīng)用戶的請求,不僅需要將虛擬服務(wù)器的IP地址設(shè)置為各真實服務(wù)器接口的第2地址,而且需要保證與運行SLB的路由器以及虛擬服務(wù)器在數(shù)據(jù)鏈路層中可達(dá),否則真實服務(wù)器將無法響應(yīng)用戶的請求。
(2)定向工作模式。定向工作模式與分派工作模式略有不同,運行SLB的路由器也是按照某種負(fù)載均衡算法把收到的用戶數(shù)據(jù)包(此時數(shù)據(jù)包的目的IP地址同樣為虛擬服務(wù)器IP地址[8-9])發(fā)往各真實的服務(wù)器,但是會通過NAT技術(shù)把數(shù)據(jù)包中的目的IP地址轉(zhuǎn)換為真實服務(wù)器的IP地址(需要注意的一點是路由器iOS的版本不同,有可能所支持的NAT類型也會不同)。在定向工作模式下,真實服務(wù)器不會認(rèn)為2層網(wǎng)絡(luò)中有虛擬服務(wù)器的存在,對于目的IP地址為自己的數(shù)據(jù)包,也不會將其丟棄。由于分派工作模式可使真實服務(wù)器獲得更高的性能與安全性,因此在默認(rèn)情況下,運行SLB的路由器多使用分派工作模式。
仿真實驗由3臺服務(wù)器(分別用路由器R1、R2、R3來模擬)、1臺思科3640路由器R4、1臺思科3550 3層交換機(jī)SW1和1臺終端計算機(jī)(用路由器R5來模擬)構(gòu)成。3臺服務(wù)器作為TELNET SERVER主要用來響應(yīng)并處理用戶TELNET服務(wù)請求,3層交換機(jī)SW1則用來與路由器R4和3臺服務(wù)器互連。為了提高用戶訪問TELNET SERVER的可靠性與安全性,將路由器R4部署在網(wǎng)絡(luò)出口處的同時,將3臺服務(wù)器部署在內(nèi)網(wǎng),并且在路由器R4上應(yīng)用SLB技術(shù),使3臺服務(wù)器在邏輯上組成1個虛擬服務(wù)器,用戶對TELNET SERVER的請求均先由路由器R4負(fù)責(zé)處理。當(dāng)路由器R4收到路由器R5的TELNET請求后,首先會向R5呈現(xiàn)出虛擬服務(wù)器的IP地址,然后再把R5的請求轉(zhuǎn)發(fā)到3臺真實服務(wù)器上,3臺服務(wù)器會按照在路由器R4上制定的負(fù)載均衡算法來決定自己所承載的流量。如果采用的是加權(quán)輪詢算法,則根據(jù)每臺真實服務(wù)器處理能力的不同,制定相應(yīng)的權(quán)值,使其可以處理相應(yīng)的用戶訪問請求。如果采用的是加權(quán)最小連接調(diào)度算法,則每臺真實服務(wù)器已建立連接的用戶訪問請求與所設(shè)定的權(quán)值會成一定比例。仿真實驗網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
路由器R4的f0/0與e1/3接口分別連接路由器R5和3層交換機(jī)SW1。而3層交換機(jī)SW1的f1/1、f1/2、f1/3接口分別與路由器R1的e1/0接口、路由器R2的e1/1接口、路由器R3的e1/2接口相連。仿真實驗各設(shè)備接口IP地址分配詳細(xì)情況如下:
設(shè)備名稱接口IP地址子網(wǎng)掩碼R1 e1/0 2.1.1.3 255.255.255.0 R2 e1/1 2.1.1.4 255.255.255.0 R3 e1/2 2.1.1.5 255.255.255.0 R4 e1/3 2.1.1.2 255.255.255.0 f0/0 211.68.193.3 255.255.255.0 R5 f0/0 211.68.193.2 255.255.255.0
(1)配置路由器R1
R1(config)#int e1/0//進(jìn)入接口e1/0
R1(config-if)#ip add 2.1.1.3 255.255.255.0
R1(config)#int LOOPBACK 1//建立環(huán)回接口
R1(config-if)#ip add 5.5.5.5 255.0.0.0
R1(config)#line vty 0 5
R1(config-line)#password sgy
R1(config-line)#login
(2)配置路由器R2
R2(config)#int e1/1//進(jìn)入接口e1/1
R2(config-if)#ip add 2.1.1.4 255.255.255.0
R2(config)#int LOOPBACK 1
R2(config-if)#ip add 6.6.6.6 255.0.0.0
R2(config)#line vty 0 5
R2(config-line)#password sgy
R2(config-line)#login
(3)配置路由器R3
R3(config)#int e1/2//進(jìn)入接口e1/2
R3(config-if)#ip add 2.1.1.5 255.255.255.0
R3(config)#int LOOPBACK 1
R3(config-if)#ip add 7.7.7.7 255.0.0.0
R3(config)#line vty 0 5
R3(config-line)#password sgy
R3(config-line)#login
(4)配置路由器R4
R4(config)#int e1/3//進(jìn)入接口e1/3
R4(config-if)#ip add 2.1.1.2 255.255.255.0
R4(config)#int f0/0//進(jìn)入接口f0/0
R4(config-if)#ip add 211.68.193.3 255.255.255.0//此接口地址用于與路由器R5互連
(5)配置路由器R4
R5(config)#int f0/0//進(jìn)入接口f0/0
R5(config-if)#ip add 211.68.193.2 255.255.255.0//此接口地址用于與路由器R4互連
(6)配置3層交換機(jī)SW1
SW1(config)#vlan database
SW1(vlan)#vlan 2
SW1(config)#int range f1/0-3
SW1(config-if-range)#sw access vlan 2
由于路由器R5與路由器R1、R2、R3不在同一網(wǎng)段中,如需互相通信就必須為其配置路由,在這里為各路由器配置可靠性更高的靜態(tài)路由。
R1(config)#ip route 0.0.0.0 0.0.0.0 2.1.1.2
R2(config)#ip route 0.0.0.0 0.0.0.0 2.1.1.2
R3(config)#ip route 0.0.0.0 0.0.0.0 2.1.1.2
R5(config)#ip route 0.0.0.0 0.0.0.0 211.68.193.3
R4(config)#ip route 5.0.0.0 255.0.0.0 2.1.1.3
R4(config)#ip route 6.0.0.0 255.0.0.0 2.1.1.4
R4(config)#ip route 7.0.0.0 255.0.0.0 2.1.1.5
在分配工作模式下,不僅需要將路由器R1、R2、R3、R4以及虛擬服務(wù)器地址配置在同一個網(wǎng)段,而且還要在路由器R1、R2、R3與3層交換機(jī)SW1互連的接口下增加一個secondary地址(此地址為虛擬服務(wù)器IP地址),從而保證它們之間在2層網(wǎng)絡(luò)可以相互通信。
R4(config)#ip slb server lzz//創(chuàng)建名為lzz的服務(wù)器組
R4(config-slb-sfarm)#real 2.1.1.3//服務(wù)器組內(nèi)其中的一個真實服務(wù)器 IP地址為1.1.1.3
R4(config-slb-real)#weight 1//配置這個真實服務(wù)器的權(quán)重,SLB按照權(quán)重值來分配各服務(wù)器所承載流量的大小
R4(config-slb-real)#inserv//啟用服務(wù)器
R4(config-slb-real)#faildetect//配置檢測服務(wù)器的可用狀態(tài),如果服務(wù)器發(fā)生故障,SLB將不會把流量轉(zhuǎn)發(fā)到該服務(wù)器
R4(config-slb-sfarm)#real 2.1.1.4
R4(config-slb-real)#weight 1
R4(config-slb-real)#inserv
R4(config-slb-real)#faildetect
R4(config-slb-sfarm)#real 2.1.1.5
R4(config-slb-real)#weight 1
R4(config-slb-real)#inserv
R4(config-slb-real)#faildetect
R4(config-slb-real)#exit
R4(config-slb-sfarm)#predictor roundrobin//采用輪詢負(fù)載均衡方式
R4(config)#ip slb vserver lzz//創(chuàng)建虛擬的服務(wù)器
R4(config-slb-vserver)#virtual 2.1.1.100 tcp telnet//設(shè)置虛擬服務(wù)器 IP 地址為2.1.1.100
R4(config-slb-vserver)#serverfarm lzz//使用前面創(chuàng)建的服務(wù)器組
R4(config-slb-vserver)#client 211.68.193.0 255.255.255.0//只允許此網(wǎng)段的用戶訪問虛擬服務(wù)器
R4(config-slb-vserver)#inservice//啟用虛擬的服務(wù)器
R1(config)#int e1/0
R1(config-if)#ip add 2.1.1.100 255.255.255.0 secondary//增加虛擬服務(wù)器的IP地址
R2(config)#int e1/1
R2(config-if)#ip add 2.1.1.100 255.255.255.0 secondary
R3(config)#int e1/2
R3(config-if)#ip add 2.1.1.100 255.255.255.0 secondary
在定向工作模式下,不需要將路由器R1、R2、R3、R4以及虛擬服務(wù)器地址配置在同一個網(wǎng)段,路由器R4會更改用戶請求的數(shù)據(jù)包,將數(shù)據(jù)包中的目的IP地址更改為真實服務(wù)器的地址(即路由器R1、R2、R3的環(huán)回接口地址)。
R4(config)#ip slb server lzz
R4(config-slb-sfarm)#nat server//設(shè)置SLB的工作模式為定向模式
R4(config-slb-sfarm)#real 5.5.5.5//模擬路由器 R1 的環(huán)回接口作為真實服務(wù)器的地址
R4(config-slb-real)#weight 1
R4(config-slb-real)#inservice
R4(config-slb-real)#faildetect
R4(config-slb-sfarm)#real 6.6.6.6//模擬路由器 R2 的環(huán)回接口作為真實服務(wù)器的地址
R4(config-slb-real)#weight 1
R4(config-slb-real)#inservice
R4(config-slb-real)#faildetect
R4(config-slb-sfarm)#real 7.7.7.7//模擬路由器 R3 的環(huán)回接口作為真實服務(wù)器的地址
R4(config-slb-real)#weight 1
R4(config-slb-real)#inservice
R4(config-slb-real)#faildetect
R4(config-slb-real)#exit
R4(config-slb-sfarm)#predictor roundrobin//采用輪詢負(fù)載均衡方式
R4(config)#ip slb vserver lzz//創(chuàng)建虛擬的服務(wù)器
R4(config-slb-vserver)#virtual 173.17.1.100 tcp telnet//設(shè)置虛擬服務(wù)器 IP地址為173.17.1.100
R4(config-slb-vserver)#serverfarm lzz//使用服務(wù)器組lzz
R4(config-slb-vserver)#client 211.68.193.0 255.255.255.0//只允許此網(wǎng)段的用戶訪問虛擬服務(wù)器
R4(config-slb-vserver)#inservice//啟用虛擬的服務(wù)器
在這里以分配工作模式下的SLB為例,測試用戶(路由器 R5)TELNET遠(yuǎn)程訪問虛擬服務(wù)器2.1.1.100,查看是否實現(xiàn)服務(wù)器之間流量負(fù)載均衡以及虛擬服務(wù)器和服務(wù)器組的工作狀態(tài)。
(1)使用TELNET命令進(jìn)行負(fù)載均衡測試
R5#telnet 2.1.1.100
Trying 2.1.1.100 ...Open
User Access Verification
Password:
R1 > exit[Connection to 2.1.1.100 closed by foreign host]//連接到了R1路由器
R5#telnet 2.1.1.100
Trying 2.1.1.100 ...Open
User Access Verification
Password:
R2>exit
[Connection to 2.1.1.100 closed by foreign host]//連接到了R2路由器
R5#telnet 2.1.1.100
Trying 2.1.1.100 ...Open
User Access Verification
Password:
R3>exit
[Connection to 2.1.1.100 closed by foreign host]//連接到了R3路由器
(2)服務(wù)器組的詳細(xì)信息如圖3所示。
圖3 服務(wù)器組的詳細(xì)信息
(3)虛擬服務(wù)器的詳細(xì)信息如圖4所示。
圖4 虛擬服務(wù)器的詳細(xì)信息
通過以上測試,可以得出以下結(jié)論:虛擬服務(wù)器lzz由3臺真實服務(wù)器構(gòu)成(用路由器R1、R2、R3來模擬),它們之間采用輪詢負(fù)載均衡算法響應(yīng)用戶請求,且每臺服務(wù)器的權(quán)重值均為1。當(dāng)用戶(路由器R5)對虛擬服務(wù)器發(fā)起訪問請求時,(此時數(shù)據(jù)包的目的地址為虛擬服務(wù)器地址2.1.1.100)3臺真實服務(wù)器(即路由器R1、R2、R3)會按照輪詢負(fù)載均衡算法依次分別響應(yīng)用戶的訪問請求,從而實現(xiàn)了服務(wù)器之間流量負(fù)載均衡。
在這里通過手動關(guān)掉路由器R1模擬真實服務(wù)器發(fā)生故障。測試后發(fā)現(xiàn),用戶(路由器R5)仍然可以對虛擬服務(wù)器地址進(jìn)行正常訪問,虛擬路由器檢測到路由器R1發(fā)生故障,進(jìn)而不再向路由器R1轉(zhuǎn)發(fā)用戶的服務(wù)請求,路由器R2和路由器R3會按照輪詢負(fù)載均衡算法繼續(xù)響應(yīng)用戶的訪問請求。由此可見,在啟用SLB技術(shù)后服務(wù)器組內(nèi)的某臺服務(wù)器即使發(fā)生故障,也不會影響用戶對資源檢索平臺的正常訪問。
SLB技術(shù)是實現(xiàn)服務(wù)器之間流量負(fù)載均衡的重要技術(shù)之一,可以提供第4層或第7層交換特性。通過在網(wǎng)絡(luò)中應(yīng)用SLB技術(shù),將多臺低性能的服務(wù)器虛擬成一臺高性能的虛擬服務(wù)器,不僅服務(wù)器之間可以按照預(yù)先設(shè)定的算法實現(xiàn)流量負(fù)載均衡,而且還使服務(wù)器組具有了容錯性。