鄭志嫻 曾凌靜
(福建交通職業(yè)技術(shù)學(xué)院,福建 福州 350007)
在各種網(wǎng)絡(luò)服務(wù)普遍應(yīng)用的今天,由于信息技術(shù)的迅猛發(fā)展,經(jīng)常面臨海量信息的處理,單機的處理能力往往不足,對用硬件和軟件方法實現(xiàn)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求不斷增長。而如何在完成同樣功能的多個網(wǎng)絡(luò)設(shè)備之間實現(xiàn)合理的業(yè)務(wù)量分配,使之不會出現(xiàn)一臺設(shè)備過忙、而別的設(shè)備卻未充分發(fā)揮處理能力的情況,就成了一個問題,負載均衡機制也因此應(yīng)運而生。
本文中所應(yīng)用到的系統(tǒng)是集3G、通信、計算機、網(wǎng)絡(luò)技術(shù)于一體,主要實現(xiàn)對物流公司各種營運車輛的安全、管理、生產(chǎn)提供服務(wù)。系統(tǒng)的構(gòu)架為集中式和分布式相結(jié)合,即中心管理平臺負責(zé)公司的數(shù)據(jù)通信、存儲、處理、分發(fā);各分中心負責(zé)范圍內(nèi)車輛監(jiān)控管理;工作站負責(zé)接入車輛日常使用、維護和服務(wù)。公司中心管理平臺與各分中心為互相備份關(guān)系,保證系統(tǒng)穩(wěn)定、安全運行。
高并發(fā)和大流量的網(wǎng)絡(luò)壓力,對系統(tǒng)提出了很高的要求,負責(zé)通訊的服務(wù)器需要承擔(dān)終端接入解析服務(wù),信息轉(zhuǎn)發(fā)和處理等任務(wù),必須采用具有快速處理能力而且可擴展性良好的方案。
本文中的系統(tǒng)采用LVS/DR(Linux Virtual Server via Direct Routing)模式來實現(xiàn)負載均衡。
集群是指一組獨立的計算機系統(tǒng)構(gòu)成的一個松耦合的多處理器系統(tǒng),它們之間通過網(wǎng)絡(luò)實現(xiàn)進程間的通訊。應(yīng)用程序可以通過網(wǎng)絡(luò)共享內(nèi)存進行消息傳送,實現(xiàn)分布式計算機[1]。集群可以將多臺計算機連接起來協(xié)同運作以對外提供各種服務(wù)。
網(wǎng)絡(luò)的負載均衡是一種動態(tài)均衡技術(shù),通過實時地分析數(shù)據(jù)包,掌握網(wǎng)絡(luò)中的數(shù)據(jù)流量狀況,把任務(wù)合理均衡地分配出去。這種技術(shù)基于現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu),提供了一種擴展服務(wù)器帶寬和增加服務(wù)器吞吐量的廉價有效的方法,加強了網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高了網(wǎng)絡(luò)的靈活性和可用性[2]。
(1)采用集群技術(shù),可以使用多臺相對廉價的計算機集群,完成以前小型機甚至中大型機才可以完成的功能和任務(wù),達到高性能的目的。
(2)如果單臺機器故障,其余服務(wù)器可以平穩(wěn)接替故障點服務(wù)器,可實現(xiàn)對用戶的不間斷服務(wù),達到高可用性。
(3)便利的可伸縮性,隨著終端數(shù)量的增加,如果需要添加新服務(wù)器,可以不影響業(yè)務(wù)正常使用的情況下,將系統(tǒng)擴容,因此,將來受到限制的將只是用戶方的網(wǎng)絡(luò)帶寬,對服務(wù)器的承受能力只是添加新服務(wù)器的問題
(4)高性能計算,即充分利用集群中的每一臺計算機的資源,實現(xiàn)復(fù)雜運算的并行處理,可以用于高端計算領(lǐng)域如科學(xué)計算領(lǐng)域和海量數(shù)據(jù)分析領(lǐng)域。
(5)負載平衡,即把負載壓力合理分配到集群中的每一臺計算機上,以減輕主服務(wù)器的壓力,降低對主服務(wù)器的硬件和軟件要求。
在如今得到了廣泛應(yīng)用的Linux平臺下,LVS(Linux Virtual Server)負載均衡集群是應(yīng)用最廣泛的負載均衡解決方案。
LVS架設(shè)的服務(wù)器集群系統(tǒng)從體系結(jié)構(gòu)上看是透明的,最終用戶只感覺到一個虛擬服務(wù)器。物理服務(wù)器之間可以通過高速的LAN或分布在各地的WAN相連。最前端是負載均衡器,它負責(zé)將各種服務(wù)請求分發(fā)給后面的集群的服務(wù)器,讓整個集群表現(xiàn)得像一個服務(wù)于同一IP地址的虛擬服務(wù)器[3]。由于實現(xiàn)了多機器集群,使得整個虛擬的服務(wù)器具有強大的處理能力,并且具有良好的可伸縮性。
LVS方式的集群從結(jié)構(gòu)上可分為兩部分:前端的負載均衡器和后端的真實服務(wù)器。前端的負載均衡器將來自外界的請求調(diào)度到集群后端不同的服務(wù)器上去執(zhí)行。真實服務(wù)器負責(zé)真正提供各種應(yīng)用服務(wù),其數(shù)量可以根據(jù)實際需求進行增減。
LVS服務(wù)器集群系統(tǒng)具有良好的伸縮性,由于是在內(nèi)核中作四層交換,只花128個字節(jié)記錄一個連接信息。一個有512M可用內(nèi)存的機器理論上可以支持到四百萬個并發(fā)連接,如配置100M網(wǎng)卡,采用DR調(diào)度模式,集群系統(tǒng)的吞吐量可高達1Gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10Gbits/s。
其它常見的負載均衡方案是網(wǎng)絡(luò)地址轉(zhuǎn)換和NAT方式。
(1)網(wǎng)絡(luò)地址轉(zhuǎn)換
用戶通過虛擬IP地址訪問服務(wù)時,訪問請求的報文會到達負載調(diào)度器,由它進行負載均衡調(diào)度,從一組真實服務(wù)器選出一個,將報文的目標(biāo)地址的虛擬IP改寫成選定服務(wù)器的地址,報文的目標(biāo)端口改寫成選定服務(wù)器的相應(yīng)端口,最后將報文發(fā)送給選定的服務(wù)器。真實服務(wù)器的回應(yīng)報文經(jīng)過負載調(diào)度器時,將報文的源地址和源端口改為虛擬和相應(yīng)的端口,再把報文發(fā)給用戶[4]。
傳統(tǒng)的Cisco的LocalDirector產(chǎn)品、Alteon的ACEDirector產(chǎn)品和F5的Big/IP產(chǎn)品等都是使用網(wǎng)絡(luò)地址轉(zhuǎn)換方法,它們是非常昂貴的商品化系統(tǒng),它們支持部分TCP/UDP協(xié)議,而且在某些協(xié)議的處理上存在發(fā)生嚴重問題的可能。
(2)NAT 技術(shù)(Network Address Translator)
NAT技術(shù)實現(xiàn)內(nèi)網(wǎng)的IP地址與公網(wǎng)的地址之間的相互轉(zhuǎn)換[4]。采用NAT方式轉(zhuǎn)發(fā)的缺點是它的伸縮能力有限,因為在這個結(jié)構(gòu)的系統(tǒng)中,請求和響應(yīng)報文都需要通過負載調(diào)度器,當(dāng)服務(wù)器結(jié)點數(shù)目不斷上升時,調(diào)度器本身有可能成為系統(tǒng)的新瓶頸。
(3)系統(tǒng)采用LVS/DR模式(Linux Virtual Server via Direct Routing)
負載調(diào)度器只處理客戶到服務(wù)器端的連接,響應(yīng)數(shù)據(jù)可以直接從獨立的網(wǎng)絡(luò)路由返回給客戶,這可以極大地提高LVS集群系統(tǒng)的伸縮性。下面詳細說明LVS/DR模式的體系結(jié)構(gòu)。
LVS/DR方案以虛擬IP為核心實現(xiàn)負載均衡[5]:調(diào)度器和服務(wù)器組都必須在物理上有一個網(wǎng)卡通過不分斷的局域網(wǎng)相連,如通過高速的交換機相連。虛擬IP地址(VIP)為調(diào)度器和服務(wù)器組共享,調(diào)度器配置的虛擬IP地址是對外可見的,用于接收虛擬服務(wù)的請求報文;所有的服務(wù)器把虛擬IP地址配置在各自的網(wǎng)絡(luò)設(shè)備上,它對外面是不可見的,只是用于處理目標(biāo)地址為虛擬IP的網(wǎng)絡(luò)請求。
LVS/DR的工作流程如圖1所示:它將報文直接路由給目標(biāo)服務(wù)器。在LVS/DR中,調(diào)度器根據(jù)各個服務(wù)器的負載情況,動態(tài)地選擇一臺服務(wù)器,不修改也不封裝IP報文,而是將數(shù)據(jù)幀的網(wǎng)卡物理地址(MAC地址)改為選出服務(wù)器的MAC地址,再將修改后的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。因為數(shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到這個數(shù)據(jù)幀,從中可以獲得該IP報文。當(dāng)服務(wù)器發(fā)現(xiàn)報文的目標(biāo)地址是在本地的網(wǎng)絡(luò)設(shè)備上,服務(wù)器處理這個報文,然后根據(jù)路由表將響應(yīng)報文直接返回給客戶[6]。
圖1 LVS/DR的工作流程示意圖
在LVS/DR中,根據(jù)缺省的TCP/IP協(xié)議棧處理,請求報文的目標(biāo)地址為虛擬IP地址,響應(yīng)報文的源地址肯定也為虛擬IP地址,所以響應(yīng)報文不需要作任何修改,可以直接返回給客戶,客戶得到正常的服務(wù),而不會知道是哪一臺服務(wù)器處理的。
LVS/DR調(diào)度器只處理客戶到服務(wù)器端的連接,響應(yīng)數(shù)據(jù)可以直接從獨立的網(wǎng)絡(luò)路由返回給客戶,這可以極大地提高LVS集群系統(tǒng)的伸縮性。
對于本系統(tǒng)而言,采用高效的LVS/DR集群方案,將大量的服務(wù)器集群起來實現(xiàn)通訊節(jié)點的作用,通過前置機的均衡作用將大量的通訊和計算平均地分攤到每一個通訊節(jié)點上,使得每個節(jié)點的處理能力能夠被綜合起來,形成一個計算網(wǎng)格。
高并發(fā)數(shù)情況下車載終端接入的壓力主要來自兩個方面,一個是大量的終端實時數(shù)據(jù)上傳帶來的通訊壓力,另一個是把這些數(shù)據(jù)轉(zhuǎn)發(fā)給管理分中心帶來的分發(fā)壓力。
對于本系統(tǒng)而言,由業(yè)務(wù)節(jié)點集群來負責(zé)處理車載終端實時匯報,由業(yè)務(wù)核心層來負責(zé)管理分中心的接入,這兩個地方都有負載均衡設(shè)備:終端接入負載均衡器和管理分中心接入均衡器,由負載均衡器在集群中各計算機之間平衡分配具體的網(wǎng)絡(luò)流量和計算壓力。
管理分中心均衡器主要負責(zé)平衡管理分中心對數(shù)據(jù)的請求所造成的壓力,它將管理分中心接入等核心任務(wù)分攤到多個業(yè)務(wù)核心層服務(wù)器上進行處理。終端接入的負載均衡器主要負責(zé)在各業(yè)務(wù)節(jié)點上平衡終端接入的負載。
下面就終端實時匯報和管理分中心數(shù)據(jù)轉(zhuǎn)發(fā)這兩個方面來具體介紹本系統(tǒng)實現(xiàn)。
終端接入的負載均衡器主要負責(zé)在各業(yè)務(wù)節(jié)點上平衡終端接入的負載,以GPRS/CDMA和短消息方式接入以及由其它GPS系統(tǒng)接入的終端,分別分派到對應(yīng)的業(yè)務(wù)節(jié)點上進行處理。
車載終端實際上傳的數(shù)據(jù)流經(jīng)過負載均衡前置機后,由負載均衡根據(jù)實際各業(yè)務(wù)節(jié)點的負載量進行均衡分配,然后將實際請求平衡地發(fā)送到業(yè)務(wù)節(jié)點上。
向車載終端發(fā)送的數(shù)據(jù)由業(yè)務(wù)節(jié)點處理后,由業(yè)務(wù)結(jié)點直接發(fā)送給終端,不再經(jīng)過負載均衡前置機。
在本系統(tǒng)中,終端同服務(wù)器通訊的數(shù)據(jù)流向見下圖2:
圖2 終端同服務(wù)器通訊的數(shù)據(jù)流圖
可以看到,上行和下行的箭頭組合成一個連接的回路,返回給終端的數(shù)據(jù)包由業(yè)務(wù)節(jié)點直接發(fā)送給終端,這樣,前置均衡只需要對終端上傳的數(shù)據(jù)流進行去向的判斷,真正的計算都在各業(yè)務(wù)節(jié)點之間均衡掉了。
管理分中心采用和公司管理中心同樣的系統(tǒng)結(jié)構(gòu),管理分中心的業(yè)務(wù)節(jié)點層和業(yè)務(wù)核心層會同省中心的同一層建立連接并進行注冊,通過身份驗證后接收省中心發(fā)來的數(shù)據(jù)。
從管理中心和分中心系統(tǒng)啟動,到分中心同管理中心建立連接并開始傳輸數(shù)據(jù)要經(jīng)歷的7個關(guān)鍵步驟。
(1)管理中心啟動后,各業(yè)務(wù)結(jié)點向業(yè)務(wù)核心層發(fā)出注冊請求,在業(yè)務(wù)核心層登記IP地址和數(shù)據(jù)轉(zhuǎn)發(fā)端口等信息。
(2)分中心啟動后,其業(yè)務(wù)結(jié)點向業(yè)務(wù)核心層注冊。
(3)分中心的業(yè)務(wù)核心層向管理中心的業(yè)務(wù)核心層注冊,請求身份驗證。
(4)管理中心業(yè)務(wù)核心層通過身份驗證后,向業(yè)務(wù)節(jié)點發(fā)送管理分中心的權(quán)限,管理中心各業(yè)務(wù)結(jié)點由此可以計算出那些終端的數(shù)據(jù)應(yīng)該發(fā)往該分中心。
(5)管理中心業(yè)務(wù)核心將各業(yè)務(wù)節(jié)點的地址和數(shù)據(jù)轉(zhuǎn)發(fā)端口發(fā)給分中心業(yè)務(wù)核心,分中心業(yè)務(wù)核心層在其業(yè)務(wù)節(jié)點間均衡分配同管理中心業(yè)務(wù)節(jié)點的連接,以保證網(wǎng)絡(luò)流量均衡。
(6)分中心業(yè)務(wù)節(jié)點連接管理中心業(yè)務(wù)節(jié)點,并請求身份驗證。
(7)通過對分中心業(yè)務(wù)結(jié)點的身份確認后,管理中心業(yè)務(wù)節(jié)點將終端數(shù)據(jù)轉(zhuǎn)發(fā)給分中心各業(yè)務(wù)節(jié)點。
以上描述了一個完整的數(shù)據(jù)轉(zhuǎn)發(fā)流程,根據(jù)同樣的流程,分中心可以將從管理中心收到的數(shù)據(jù)進一步轉(zhuǎn)發(fā)到下級系統(tǒng)。
本文對負載均衡的特點及LVS的體系結(jié)構(gòu)等進行了介紹,通過終端實時匯報和分中心數(shù)據(jù)轉(zhuǎn)發(fā)的兩個方面來介紹本系統(tǒng)實現(xiàn),一定程度上解決系統(tǒng)存在的高并發(fā)數(shù)的壓力問題。對于本系統(tǒng)而言,公司中心管理平臺可以通過使用穩(wěn)定性和安全性很高的Linux或Unix主機來保障關(guān)鍵業(yè)務(wù)的高性能處理,可以通過服務(wù)器集群來實現(xiàn)海量的數(shù)據(jù)計算;而對于各分中心而言,不需要大規(guī)模的服務(wù)器集群,可以通過普通的Windows平臺直接把本系統(tǒng)很方便地運行起來。
[1]王國明.集群計算系統(tǒng)的分析與研究[J].電腦知識與技術(shù),2006.32.
[2]WEB服務(wù)器的集群 [EB/OL]. http://www.javaeye.com/topic/169911
[3]李中福.計算機集群技術(shù)應(yīng)用研究[D].北京:中國地質(zhì)大學(xué),2006.
[4]胡曉軍.Linux服務(wù)器集群系統(tǒng)的研究和應(yīng)用[D].廣東:廣東工業(yè)大學(xué),2005.
[5]利用集群技術(shù)實現(xiàn) Web服務(wù)器負載均衡[EB/OL].http://www.linuxexpress.com.cn/news/jq/2008-06-06/1977.html
[6]LVS 中文站點[EB/OL].http://zh.linuxvirtualserver.org/.