摘要:該文描述了當(dāng)前服務(wù)器集群的體系結(jié)構(gòu),分析了各種集群模式可能存在的安全問題及相應(yīng)的參考解決對(duì)策,提出了一個(gè)高校服務(wù)器集群負(fù)載均衡策略的設(shè)計(jì)方案。
關(guān)鍵詞:集群;負(fù)載均衡;安全對(duì)策
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)26-7391-02
The Research on Server Cluster and Load Balancing
LI Jun-qing1,2, ZHOU En1, FU Tian1
(1.Hainan Software Profession Institute, Qionghai 571400,China; 2.College of Information Science and Technology, Hainan University, Haikou 570228, China)
Abstract: This paper describes the framework of current server cluster, analyzes the potential security problems and solutions for types of cluster models. It puts forward a design approach for college load balancing server cluster.
Key words: cluster; load balancing; security strategy.
隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)信息需求的增長(zhǎng),使得網(wǎng)絡(luò)服務(wù)器和網(wǎng)絡(luò)接入帶寬經(jīng)常出現(xiàn)超載,解決這一問題的主要手段有一是升級(jí)服務(wù)器硬件,一是增加帶寬,一是采用服務(wù)器集群技術(shù)。升級(jí)硬件依托于市場(chǎng)主流硬件廠商提供的硬件服務(wù)能力配置的支持,增加帶寬取決于有資質(zhì)的接入商所提供的帶寬保證,兩者費(fèi)用不菲,成本相對(duì)較高。在實(shí)際應(yīng)用中,根據(jù)服務(wù)器硬件情況和帶寬情況,選擇在其都已達(dá)到最大承受范圍的情況下,綜合考慮使用集群技術(shù)來進(jìn)行負(fù)載均衡,解決超載問題。本文結(jié)合目前主流集群體系結(jié)構(gòu),依托現(xiàn)有負(fù)載均衡的研究成果,綜合分析,就集群現(xiàn)狀及負(fù)載均衡的安全進(jìn)行探討。
1 集群及集群的體系結(jié)構(gòu)
集群是指一組獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成的一個(gè)松耦合的多處理器系統(tǒng),它們之間通過網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信。應(yīng)用程序可以通過網(wǎng)絡(luò)共享內(nèi)存進(jìn)行消息傳送,實(shí)現(xiàn)分布式計(jì)算機(jī)。服務(wù)器集群就是指將很多服務(wù)器集中起來一起進(jìn)行同一種服務(wù),在客戶端看來就象是只有一個(gè)服務(wù)器。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得很高的計(jì)算速度,也可以用多個(gè)計(jì)算機(jī)做備份,從而使得任何一個(gè)機(jī)器壞了整個(gè)系統(tǒng)還是能正常運(yùn)行。群集操作可以減少單點(diǎn)故障數(shù)量,并且實(shí)現(xiàn)了群集資源的高可用性。
服務(wù)器集群系統(tǒng)可以分為局部范圍內(nèi)的多臺(tái)服務(wù)器組成的局域集群和多個(gè)局域集群在地理位置上廣域分布而形成的廣域集群。對(duì)于局域集群,一般為集中式的基于請(qǐng)求分配器的負(fù)載分配策略,對(duì)于廣域集群,通常采用群集間的基于DNS和群集內(nèi)的基于Dispatcher的兩級(jí)負(fù)載分配機(jī)制或者基于服務(wù)器鏡象的負(fù)載均衡機(jī)制。
1.1 基于服務(wù)器鏡像
鏡像站點(diǎn)的體系結(jié)構(gòu)屬于一種每個(gè)單獨(dú)的節(jié)點(diǎn)都分散于地理上不同位置的集群,集群中每個(gè)節(jié)點(diǎn)具有不同的地址,具有相同的鏡像內(nèi)容。用戶直接從多個(gè)具有獨(dú)立URL的站點(diǎn)中進(jìn)行選擇,并將HTTP請(qǐng)求發(fā)送給該鏡像站點(diǎn),進(jìn)而得到響應(yīng)。一般來講,用戶可以選擇一個(gè)地理上距離最近的集群節(jié)點(diǎn)以減少響應(yīng)時(shí)間。
1.2 基于DNS
基于DNS的集群體系結(jié)構(gòu)中,集群所在域的授權(quán)域名服務(wù)器(稱為“集群DNS”)向外部提供一個(gè)單一的URL主機(jī)名作為整個(gè)集群的虛擬接口,使得集群對(duì)用戶端具有透明性。集群中的每臺(tái)服務(wù)器都具有一個(gè)真實(shí)的IP地址。集群DNS作為集群系統(tǒng)的集中式請(qǐng)求調(diào)度器,在域名(URL)到服務(wù)器節(jié)點(diǎn)IP地址的映射過程中,能夠選擇集群中的任何節(jié)點(diǎn)作為請(qǐng)求分配的目的地。
廣域集群是一種典型的層次化結(jié)構(gòu),因此采用兩級(jí)負(fù)載分配機(jī)制。首先利用局域集群中的DNS執(zhí)行一級(jí)分配,將客戶端請(qǐng)求分配至各個(gè)局域集群中,然后在局域集群中實(shí)現(xiàn)二級(jí)分配;另外一種是廣域分布的自治域之間的動(dòng)態(tài)負(fù)載分配和負(fù)載平衡。
對(duì)于廣域集群系統(tǒng)而言,能否實(shí)現(xiàn)連接請(qǐng)求的公平分配對(duì)于QOS保證而言是一個(gè)至關(guān)重要的問題。文獻(xiàn)[1]在給出的多量綱性能參數(shù)融合策略的基礎(chǔ)上,提出的請(qǐng)求分配算法可滿足系統(tǒng)的負(fù)載平衡需求。
1.3 基于請(qǐng)求分配器
“基于請(qǐng)求分配器(Dispatcher)的服務(wù)器集群能夠完全控制所有到來的請(qǐng)求并且實(shí)現(xiàn)精細(xì)粒度的負(fù)載均衡”[3]。在基于請(qǐng)求分配器的集群系統(tǒng)中,前端的請(qǐng)求分配器作為到達(dá)請(qǐng)求的代理,負(fù)責(zé)集中地接收所有到達(dá)的HTTP請(qǐng)求,并且按照特定的負(fù)載均衡策略將客戶的請(qǐng)求均衡、透明地分配給集群中的后端服務(wù)器。整個(gè)集群系統(tǒng)具有一個(gè)單一的虛擬IP地址,即集群地址,因此集群中的服務(wù)器對(duì)用戶端是透明的。實(shí)際上,集群地址就是請(qǐng)求分配器的IP地址,即請(qǐng)求分配器為集群系統(tǒng)提供了一個(gè)單一的虛擬接口,使得整個(gè)集群對(duì)外部而言猶如一臺(tái)單一的主機(jī)。
基于請(qǐng)求分配器的集群系統(tǒng)可以運(yùn)行在以下三種模式下:
1.3.1 VS-NAT
Virtual Server via NAT(VS-NAT)即用地址翻譯實(shí)現(xiàn)虛擬服務(wù)器。地址轉(zhuǎn)換器有能被外界訪問到的合法IP地址,它修改來自專有網(wǎng)絡(luò)的流出包的地址。外界看起來包是來自地址轉(zhuǎn)換器本身,當(dāng)外界包送到轉(zhuǎn)換器時(shí),它能判斷出應(yīng)該將包送到內(nèi)部網(wǎng)的哪個(gè)節(jié)點(diǎn)。優(yōu)點(diǎn)是節(jié)省IP 地址,能對(duì)內(nèi)部進(jìn)行偽裝;缺點(diǎn)是效率低,因?yàn)榉祷亟o請(qǐng)求方的流量經(jīng)過轉(zhuǎn)換器。
1.3.2 VS-TUN
Virtual Server via IP Tunneling (VS-TUN)即用IP隧道技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。這種方式是在集群的節(jié)點(diǎn)不在同一個(gè)網(wǎng)段時(shí)可用的轉(zhuǎn)發(fā)機(jī)制,是將IP包封裝在其他網(wǎng)絡(luò)流量中的方法。為了安全的考慮,應(yīng)該使用隧道技術(shù)中的VPN,也可使用租用專線。集群所能提供的服務(wù)是基于TCP/IP的Web服務(wù)、Mail服務(wù)、News服務(wù)、DNS服務(wù)、Proxy服務(wù)器等等.
1.3.3 VS-DR
Virtual Server via Direct Routing(VS-DR)即用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。當(dāng)參與集群的計(jì)算機(jī)和作為控制管理的計(jì)算機(jī)在同一個(gè)網(wǎng)段時(shí)可以用此法,控制管理的計(jì)算機(jī)接收到請(qǐng)求包時(shí)直接送到參與集群的節(jié)點(diǎn)。優(yōu)
點(diǎn)是返回給客戶的流量不經(jīng)過控制主機(jī),速度快開銷少。
2 集群的可能存在的安全問題及對(duì)策
2.1 負(fù)載不均衡
對(duì)于集群,基于服務(wù)器鏡像的集群的節(jié)點(diǎn)選擇依賴于客戶的主觀判斷,而客戶并不知道所選擇服務(wù)器節(jié)點(diǎn)的負(fù)載情況,因此可能會(huì)造成被請(qǐng)求節(jié)點(diǎn)的超載,而其它節(jié)點(diǎn)未被請(qǐng)求,造成負(fù)載不均衡。解決此種情況引起的負(fù)載不均衡,一般考慮對(duì)對(duì)應(yīng)節(jié)點(diǎn)加請(qǐng)求反饋,即服務(wù)比例的反向定位。
此外,負(fù)載均衡算法的使用或系統(tǒng)配置不當(dāng)?shù)膯栴}也會(huì)造成負(fù)載不均衡。如根據(jù)權(quán)值來計(jì)算的節(jié)點(diǎn),高權(quán)值的節(jié)點(diǎn)比其他節(jié)點(diǎn)更容易分配到任務(wù),從而引起超載,進(jìn)而導(dǎo)致負(fù)載不均衡。
2.2網(wǎng)絡(luò)不可達(dá)
網(wǎng)絡(luò)不可達(dá)一般由于路由問題或者網(wǎng)絡(luò)的暫時(shí)性錯(cuò)誤引起的。網(wǎng)絡(luò)不可達(dá)錯(cuò)誤在高可用集群環(huán)境中往往作為失效事件的觸發(fā)條件,需要被被均衡器及時(shí)判斷并做出響應(yīng)。該錯(cuò)誤比常見于網(wǎng)絡(luò)風(fēng)暴、節(jié)點(diǎn)web服務(wù)過載等情況下。由于內(nèi)部通信機(jī)制的設(shè)計(jì)不當(dāng),導(dǎo)致節(jié)點(diǎn)之間過于頻繁的進(jìn)行消息通信,因而在集群內(nèi)部的網(wǎng)絡(luò)中產(chǎn)生大量的UDP通信包,使得網(wǎng)絡(luò)阻塞。因此使用高效率的、可定制的網(wǎng)絡(luò)消息協(xié)議就成了解決的關(guān)鍵。TCP/IP作為傳統(tǒng)協(xié)議,本身存在一定的局限。在假定通信信道是可靠穩(wěn)定的前提下,簡(jiǎn)化通信原語(yǔ)的設(shè)定,減少握手和確認(rèn)消息,使用大的滑動(dòng)窗口和收發(fā)緩沖區(qū),以減少網(wǎng)絡(luò)不可達(dá)引起的阻塞。
2.3 Session信息的安全穩(wěn)定以及SSL交換
面向內(nèi)容的負(fù)載均衡在使用過程中需要考慮Session信息的穩(wěn)定及基于Session的SSL交換,如商務(wù)網(wǎng)站需要把一些信息如用戶登錄的權(quán)限、時(shí)間等存儲(chǔ)會(huì)話,當(dāng)客戶端連接的時(shí)候,節(jié)點(diǎn)服務(wù)器會(huì)給客戶端一個(gè)含有session id 的cookie信息,客戶端之后的request 都附帶會(huì)話。節(jié)點(diǎn)服務(wù)器根據(jù)id 來索引客戶端的session。當(dāng)客戶端重復(fù)請(qǐng)求時(shí),集群技術(shù)因?yàn)閮H對(duì)請(qǐng)求的地址和端口信息進(jìn)行負(fù)載平衡,所以可能會(huì)把同一個(gè)會(huì)話的請(qǐng)求重定向到另外一個(gè)節(jié)點(diǎn),從而導(dǎo)致Session失效,進(jìn)而所有操作失效。重復(fù)使用session的SSL數(shù)據(jù)的加密也存在該問題。
解決該問題的辦法是負(fù)載平衡器必需建立一個(gè)全局的Hash映射表,記錄某個(gè)客戶端的IP地址和服務(wù)器的Session標(biāo)記的映射關(guān)系,在下次客戶重新請(qǐng)求時(shí),根據(jù)匹配關(guān)系定向到原節(jié)點(diǎn)服務(wù)器。此外,建立整體SSO認(rèn)證與統(tǒng)一調(diào)度,由提供SSO服務(wù)主機(jī)來統(tǒng)一認(rèn)證,因此則不存在節(jié)點(diǎn)不對(duì)應(yīng)而導(dǎo)致的Session失效。
2.4 集群I/O的一致性
采用集群后,集群內(nèi)的各個(gè)節(jié)點(diǎn)訪問能力被視為等同,因此具有共享信息的能力,若某個(gè)節(jié)點(diǎn)改寫數(shù)據(jù),其它節(jié)點(diǎn)就需要接收到該數(shù)據(jù),如何對(duì)這一數(shù)據(jù)進(jìn)行一致性訪問,就成為負(fù)載均衡系統(tǒng)的重要問題。目前對(duì)于存取量不大的可以采用NAS,在集群中通過部署,保證接點(diǎn)一致性訪問。此外采用GFS或Lustre。
3 高校服務(wù)器集群負(fù)載均衡策略設(shè)計(jì)
根據(jù)前面分析關(guān)于服務(wù)器集群可能存在的問題,為了盡量規(guī)避風(fēng)險(xiǎn),設(shè)計(jì)出如圖1所示集群部署,整合了廣域集群與局域集群。可以實(shí)現(xiàn)基于DNS的集群;同時(shí)通過路由配置,實(shí)現(xiàn)不同網(wǎng)絡(luò)的鏡像;此外建立基于請(qǐng)求分配器的集群(可根據(jù)實(shí)際網(wǎng)絡(luò)情況,選擇集群模式)。
4 結(jié)束語(yǔ)
服務(wù)器集群策略本文分析的各種問題及解決對(duì)策都是對(duì)單一問題進(jìn)行分析,針對(duì)廣域集群和局域集群整合后的綜合應(yīng)用的細(xì)節(jié)需要進(jìn)一步進(jìn)行研究。
參考文獻(xiàn):
[1] 李捷,劉景森,劉先省.一種新的面向廣域Web服務(wù)器集群的動(dòng)態(tài)負(fù)載平衡算法[J].電子學(xué)報(bào),2007(12):2425-2429.
[2] 甄翠明,黃金春.利用多層網(wǎng)絡(luò)連接提高公網(wǎng)Web服務(wù)器安全性[J].桂林電子科技大學(xué)學(xué)報(bào),2008(12):523-525.
[3] Colajanni C M.Dynamical load balancing on Web-server systems[J].IEEE Internet Computing,1999,3(3):28-39.
[4] 林凡.集群的可擴(kuò)展性及其分布式體系結(jié)構(gòu)[M].IBM官方網(wǎng)站,2003.