劉勝楠,汪詩林
(1.國防科學技術(shù)大學計算機學院,湖南 長沙 410073;2.國防科學技術(shù)大學信息化管理辦公室,湖南 長沙 410073)
虛擬環(huán)境下Web服務動態(tài)負載均衡策略改進*
劉勝楠1,汪詩林2
(1.國防科學技術(shù)大學計算機學院,湖南 長沙 410073;2.國防科學技術(shù)大學信息化管理辦公室,湖南 長沙 410073)
為了提高Web服務集群的伸縮性和自動化能力,從虛擬化和負載均衡兩方面研究集群系統(tǒng),對現(xiàn)有負載采集策略做了改進,設(shè)計并實現(xiàn)了一種可根據(jù)負載值自動控制集群規(guī)模的模型XCluster。新模型運行在Xen提供的虛擬化環(huán)境中,實時監(jiān)視宿主機層和虛擬機層的負載狀態(tài),隨著集群系統(tǒng)總負載的增長,逐漸引入新的虛擬機來擴大集群規(guī)模,同時將任務合理分配到各個虛擬機節(jié)點上;當總負載下降時,逐漸關(guān)閉虛擬機縮小集群規(guī)模,釋放出來的硬件資源又可以提供給其他集群系統(tǒng)使用。理論分析和實驗結(jié)果表明,XCluster只需占用很少的網(wǎng)絡通信量完成信息收集和命令下達,能夠充分利用虛擬機易于管理的優(yōu)勢完成后端節(jié)點的調(diào)度,并且在任務總量相同的情況下,使用盡可能少的集群節(jié)點來執(zhí)行任務。
虛擬化;Web服務;動態(tài)負載均衡;自動化控制;集群;任務調(diào)度
在互聯(lián)網(wǎng)高速發(fā)展的今天,各大網(wǎng)站為了應對高并發(fā)的用戶訪問通常以集群的方式來部署Web服務。其經(jīng)典結(jié)構(gòu)正如Google[1]的搜索引擎一樣,由負責任務調(diào)度的前端節(jié)點和負責處理請求的后端節(jié)點組成。虛擬化技術(shù)出現(xiàn)以前,集群大多是固定規(guī)模,物理服務器與集群節(jié)點一一對應,物理服務器的數(shù)量越多,集群能夠承受的負載越大。然而,由于影響網(wǎng)站訪問量[2]的因素太多,集群規(guī)模又無法改變,于是要么在峰值到達時負載過重,響應緩慢,要么出現(xiàn)大量空閑節(jié)點。新一代的集群將節(jié)點轉(zhuǎn)移到虛擬機上,不僅節(jié)約硬件投入,而且借助虛擬化層提供的接口,啟動或關(guān)閉后端節(jié)點,可大大提高系統(tǒng)的伸縮性和自動控制能力。在虛擬化環(huán)境下,前端節(jié)點需要在兩個層面[3]調(diào)度任務,一是虛擬機層,任務來自用戶請求以及為了處理請求而產(chǎn)生的進程和子進程,負載體現(xiàn)在占用虛擬機CPU、內(nèi)存以及網(wǎng)絡資源上;二是宿主機層,任務來自虛擬化層針對虛擬機的操作,負載體現(xiàn)在虛擬機數(shù)量以及占用的硬件資源上。圖1以Xen(一個由劍橋大學開發(fā)的虛擬機監(jiān)視器)[4]為例,描述了在M臺宿主機上部署N套Web服務集群的情形。
Figure 1 Schematic diagram of clusters deployed in Xen environment
從虛擬機層的角度看,大量并發(fā)的用戶請求通過網(wǎng)絡被前端節(jié)點分發(fā)到后端節(jié)點,客戶操作系統(tǒng)Guest OS(Guest Operation System)將請求轉(zhuǎn)換成計算/IO指令,在Domain0(一個特殊的Guest OS,具有調(diào)用硬件設(shè)備的最高權(quán)限)的調(diào)度下,分配硬件資源執(zhí)行;從宿主機層的角度看,處于活動狀態(tài)的后端節(jié)點的數(shù)量和位置隨著用戶訪問量的變化而變化。但是,傳統(tǒng)集群技術(shù)無法監(jiān)控宿主機,也沒有控制虛擬機的權(quán)限,因此僅能在虛擬機層實現(xiàn)負載均衡。
為了解決以上問題,本文在現(xiàn)有動態(tài)負載均衡技術(shù)的基礎(chǔ)上,引入虛擬層提供的監(jiān)控功能,結(jié)合WebService技術(shù),將信息策略和轉(zhuǎn)移策略獨立出來,設(shè)計并實現(xiàn)了一種根據(jù)負載值自動控制集群規(guī)模的模型XCluster(Xen-Cluster),同時滿足虛擬機層與宿主機層的負載均衡需求。
負載均衡策略根據(jù)考慮的側(cè)重點不同,可以有多種分類方式。按調(diào)度方式有靜態(tài)調(diào)度和、動態(tài)調(diào)度,按調(diào)度對象類型有基于任務的調(diào)度和基于資源的調(diào)度,按調(diào)度器的位置分有客戶端層、服務器層、網(wǎng)絡層。靜態(tài)調(diào)度[5]算法主要有輪詢法、加權(quán)法、先分組加權(quán),再組內(nèi)輪詢的混合法等,這些算法不需要監(jiān)控節(jié)點的實際負載,算法簡單易于實現(xiàn),但負載均衡效果不佳;動態(tài)調(diào)度[6]正好相反,根據(jù)Kameda H等人[7]的實驗結(jié)果,動態(tài)調(diào)度的性能效果比靜態(tài)調(diào)度要高30%~40%?;谌蝿盏恼{(diào)度,將任務看做產(chǎn)生負載的根源,側(cè)重于通過合理分發(fā)任務達到平衡系統(tǒng)的整體負載的目的;基于資源的調(diào)度,將計算資源看做可以再分配的對象,如虛擬機遷移技術(shù)[8],通過預拷貝和后續(xù)拷貝將虛擬機的運行狀態(tài)完整、快速地從原重載宿主機平滑地遷移到目標輕載宿主機上。但是,它有一個限制,虛擬機上運行的Web服務必須能夠兼容目標宿主機的配置,比如一個32位的虛擬機,再怎么遷移也無法使用超過4 GB的內(nèi)存。調(diào)度器運行在服務器上是最常見的形式,屬于服務器層調(diào)度;也有一些特殊的瀏覽器,如Netscope[9]直接從自己的服務器上下載最佳路由,屬于在客戶端層實現(xiàn)調(diào)度的方法;還有將調(diào)度器放入網(wǎng)絡層甚至鏈路層設(shè)備[10]的,直接在網(wǎng)絡層將用戶請求地址替換成負載最低的服務器地址。
Figure 2 XCluster model
本文設(shè)計的XCluster需要控制多個Web集群,因此適合選擇在服務器層基于任務的動態(tài)調(diào)度算法[6,7,11]。它有信息策略、轉(zhuǎn)移策略、啟動策略、選擇策略、定位策略五個組成部分,集中式和分布式兩種實現(xiàn)方式。在文獻[6]設(shè)計的決策支持系統(tǒng)中,信息策略采用獨立服務器集中收集,稱為管理者,其他策略分散到各個節(jié)點,采用分布式調(diào)度。各節(jié)點通過WebService向管理者查詢各節(jié)點負載表。WebService技術(shù)降低了集中式調(diào)度器的負載。文獻[12]設(shè)計了一種門限策略來量化負載,不同Web服務占用資源的比例是不同的。門限策略可以根據(jù)實際情況設(shè)定每種負載指標的權(quán)重以及劃分負載狀態(tài)的閾值,為調(diào)度器提供量化手段。文獻[13]設(shè)計了一種監(jiān)控虛擬環(huán)境下分布式系統(tǒng)狀態(tài)的框架,它由中央監(jiān)視器和節(jié)點監(jiān)視器組成,節(jié)點監(jiān)視器借助Xen收集節(jié)點的實時數(shù)據(jù),減少對虛擬機資源的占用,然后將整合后的數(shù)據(jù)發(fā)送給中央監(jiān)視器分析。在信息策略中,節(jié)點監(jiān)控是必不可少的,Xen的性能監(jiān)視器在實時性上有所欠缺,而且也無法監(jiān)控進程,所以每個節(jié)點上還是需要額外安裝監(jiān)視進程。各個節(jié)點監(jiān)控數(shù)據(jù)的傳輸必然會增加集群的網(wǎng)絡負載,收集的信息越詳細,負載越重。文獻[14]利用Xen的管理工具,根據(jù)負載狀態(tài)修改虛擬機的配置,從而擴展或縮小集群的服務能力,實現(xiàn)簡單而且有效,不過虛擬機上的應用程序必須能夠兼容新的配置。
本文所設(shè)計的XCluster要實現(xiàn)兩個目標:滿足單個集群系統(tǒng)節(jié)點的動態(tài)擴展,在虛擬機層面實現(xiàn)負載均衡;多個集群系統(tǒng)的節(jié)點在有限的宿主機上合理分布,在宿主機層面實現(xiàn)負載均衡。圖2展示了XCluster的整體結(jié)構(gòu),ClusterConfigurator是為集群管理員提供基本配置的應用程序,包括集群規(guī)模的規(guī)劃、負載指標及權(quán)重等。前端節(jié)點由XenMonitor、ClusterScheduler、VMController三個獨立功能的子系統(tǒng)組成,它們通過WebService進行通信。XenMonitor負責收集宿主機、虛擬機信息以及負載情況;ClusterScheduler接收用戶請求,完成虛擬機層任務調(diào)度;VMController通過控制備用節(jié)點、活動節(jié)點的數(shù)量和位置完成宿主機層的負載均衡。后端節(jié)點上ImmortalWeb是集群的業(yè)務系統(tǒng),為了方便測試,它被設(shè)計成制造虛擬機CPU、內(nèi)存以及IO壓力的Web應用程序;VmClientMonitor負責監(jiān)控虛擬機以及ImmortalWeb實時狀態(tài),當發(fā)現(xiàn)異常時通過WebService向ClusterScheduler報告。
3.1 信息策略
在XCluster中,后端節(jié)點的狀態(tài)由節(jié)點類型和量化負載值兩部分組成。節(jié)點類型分為空節(jié)點BN(Blank Node)、備用節(jié)點SN(Standby Node)和活動節(jié)點AN(Active Node)三類。空節(jié)點是僅在虛擬化環(huán)境中才會出現(xiàn)的一種新型節(jié)點,它表示在一臺宿主機上已規(guī)劃但未部署虛擬機的節(jié)點;備用節(jié)點表示該虛擬機已經(jīng)部署但處于停機狀態(tài),空節(jié)點和備用節(jié)點都沒有負載;活動節(jié)點表示該虛擬機處于運行狀態(tài),并根據(jù)管理員設(shè)定的閾值分為適載節(jié)點OptN(Optinum-load Node)、重載節(jié)點HvN(Heavy-load Node)和滿載節(jié)點FuN(Full-load Node)三類?;顒庸?jié)點、備用節(jié)點以及空節(jié)點的總和代表了集群的最大規(guī)模,活動節(jié)點代表集群的當前規(guī)模,備用節(jié)點和空節(jié)點代表集群剩余的擴展能力。量化負載值用于比較處于相同閾值區(qū)間活動節(jié)點之間的負載大小。本系統(tǒng)提供了CPU利用率、內(nèi)存占用率、I/O利用率、磁盤利用率等常見的負載指標,并采用對負載指標加權(quán)求和的策略量化。權(quán)重由系統(tǒng)管理員根據(jù)集群系統(tǒng)的特點自行設(shè)置(下文中負載值均指量化后的負載值)。
本文不涉及對宿主機電源的控制,因此所有宿主機都是活動節(jié)點,其狀態(tài)主要是指負載類型。由于各虛擬機之間具有良好的隔離性,相同閾值區(qū)間內(nèi)宿主機負載值高或者低對虛擬機的影響都非常小,可忽略不計,所以只需要適載OptH(Optimum-load Host)和滿載FuH(Full-load Host)兩種即可。宿主機負載有兩種不同表現(xiàn),一種體現(xiàn)在部署虛擬機時,當宿主機的空閑塊設(shè)備或空閑內(nèi)存等不滿足部署虛擬機條件時,視為滿載,反之為適載;另一種體現(xiàn)在啟動虛擬機時,當宿主機的CPU或空閑內(nèi)存等不能滿足啟動虛擬機條件時,視為滿載,反之為適載。
3.2 系統(tǒng)均衡性判定
集群系統(tǒng)從啟動的那一刻起就在擴展、穩(wěn)定和收縮三種狀態(tài)之間轉(zhuǎn)換。VMController通過分別統(tǒng)計各類后端節(jié)點的數(shù)量來判斷集群系統(tǒng)是處于何種狀態(tài),只要不是穩(wěn)定狀態(tài)就會觸發(fā)相應的操作讓系統(tǒng)回到穩(wěn)定狀態(tài)。圖3描述了這三種狀態(tài)的轉(zhuǎn)換過程,當系統(tǒng)啟動時,所有節(jié)點都是空節(jié)點,系統(tǒng)處于擴展狀態(tài),VMController執(zhí)行部署和啟動虛擬機的操作增加活動節(jié)點數(shù),直到適載節(jié)點數(shù)與重載節(jié)點數(shù)之和達到最小活動節(jié)點數(shù)MinAN(Minimum Number of Active Nodes),并且備用節(jié)點數(shù)達到最小備用節(jié)點數(shù)MinSN(Minimum Number of Standby Nodes)。接著,系統(tǒng)進入穩(wěn)定狀態(tài)。當適載節(jié)點數(shù)大于最大適載節(jié)點數(shù)MaxOptN(Maximum Number of Optinum-load Node),或者備用節(jié)點數(shù)大于最大備用節(jié)點數(shù)MaxSN(Maximum Number of Standby Nodes)時,系統(tǒng)進入收縮狀態(tài),VMController執(zhí)行關(guān)閉或刪除虛擬機的操作,減少活動節(jié)點和備用節(jié)點,使系統(tǒng)再次回到穩(wěn)定狀態(tài)。
Figure 3 State transition diagram of XCluster
3.3 轉(zhuǎn)移策略與定位策略
宿主機層負載均衡的對象是虛擬機,有四種操作用于處理六種場景。四種操作分別是:將虛擬機部署到宿主機,使得空節(jié)點變?yōu)閭溆霉?jié)點;刪除備用節(jié)點,使之變?yōu)榭展?jié)點;啟動備用節(jié)點變?yōu)榛顒庸?jié)點;關(guān)閉活動節(jié)點變?yōu)閭溆霉?jié)點。六種場景如圖4所示。場景1是當備用節(jié)點數(shù)小于MinSN,且存在有空節(jié)點的適載宿主機時,將虛擬機隨機部署在一臺適載宿主機上。MinSN的取值表示宿主機層集群的機動能力,值越大機動性越強,占用宿主機塊設(shè)備資源也越多。部署的方式有兩種,一種是將虛擬機鏡像文件導入到宿主機上,另一種類似虛擬機遷移,通過copy on write技術(shù)復制同一虛擬化池(Virtualized Pool)中其他宿主機上的虛擬機實現(xiàn)。場景2是當備用節(jié)點數(shù)大于MaxSN時,隨機刪除一個備用節(jié)點,釋放所在宿主機的塊設(shè)備資源。MaxSN與MinSN的差表示宿主機層集群的敏感度,差值越小靈敏度越高,負載均衡活動越頻繁。場景3是當備用節(jié)點數(shù)在MinSN與MaxSN之間時,如果最后一個被關(guān)閉的備用節(jié)點是在足夠長的時間IdleTimeout(Idle Time Out)前關(guān)閉的,那么認為集群目前處于一個十分穩(wěn)定的狀態(tài),可以將備用節(jié)點的數(shù)量逐步收斂到MinSN值。IdleTimeout值表示集群從穩(wěn)定過渡到空閑的時長,該值越大則說明需要保持穩(wěn)定狀態(tài)的時間更長。場景4是當適載節(jié)點數(shù)與重載節(jié)點數(shù)之和小于MinAN時,從適載宿主機上隨機啟動一個備用節(jié)點上的虛擬機。該虛擬機負載會從0直接升至滿載再逐漸降為重載,最后穩(wěn)定在適載狀態(tài)。MinAN表示集群穩(wěn)定時的最小吞吐量(throughput),值越大最小吞吐量越大。場景5是當適載節(jié)點數(shù)大于MaxOptN時,通常是在集群負載下降的時候才會出現(xiàn)該情形,隨機關(guān)閉一個收到關(guān)機信號的適載節(jié)點。MaxOptN用于調(diào)節(jié)關(guān)閉適載節(jié)點的速度,值越大速度越慢。場景6是假設(shè)管理員讓MaxOptN的值大于MinAN的一種極端情況,當適載節(jié)點數(shù)超過MinAN且小于MaxOptN時,同樣認為集群規(guī)模應當縮小,從而隨機關(guān)閉一個適載節(jié)點。
圖4 宿主機層轉(zhuǎn)移策略和定位策略
虛擬機層負載均衡的對象是任務,任務的調(diào)度僅與活動節(jié)點中的適載節(jié)點與重載節(jié)點有關(guān),而滿載節(jié)點由于負載已經(jīng)達到上限所以不再接收新的任務,備用節(jié)點和空節(jié)點都缺少處于運行狀態(tài)的虛擬機,也不能接收任務。由于宿主機層的負載均衡能夠保證在集群達到最大規(guī)模,即所有剩余空節(jié)點以及備用節(jié)點所在的宿主機都為滿載宿主機,所有活動節(jié)點都為滿載節(jié)點之前,總能找到可以轉(zhuǎn)發(fā)任務的活動節(jié)點,因此虛擬機層的轉(zhuǎn)移和定位策略的目標是在滿足任務并發(fā)的需求的前提下使用盡可能少的活動節(jié)點。其核心體現(xiàn)在后端節(jié)點調(diào)度優(yōu)先級隊列PQ(Priority Queue of Back-End Nodes)上。該隊列按節(jié)點類型分為三段,第一段的優(yōu)先級最高,第二段次之,第三段最低。每一段都要按負載值排序,同一段內(nèi)排名越靠前,優(yōu)先級越高。第一段存儲負載值最大的前MinAN個適載節(jié)點,負載值從大到小排序;第二段存儲所有重載節(jié)點,負載值從小到大排序;第三段存儲除去第一段后剩下的適載節(jié)點,負載值從大到小排序。PQ的長度LPQ(Length of PQ)受宿主機層負載均衡的影響而動態(tài)變化。在一次任務調(diào)度周期中,N個任務從任務隊列Qt(Queue of Tasks)中取出,逐一轉(zhuǎn)發(fā)至從PQ中選出的N個節(jié)點上。調(diào)度過程會出現(xiàn)兩種情況,第一種情況是當N小于或等于LPQ時,按優(yōu)先級從PQ逐一取出節(jié)點接收任務,直到所有任務調(diào)度完畢。優(yōu)先級越高的節(jié)點,獲得任務的概率越高,負載值增長得越快。經(jīng)過實驗證明,MinAN值設(shè)置得越大,系統(tǒng)抵抗訪問量激增的能力就越強。第二種情況是當N大于LPQ時,采用輪詢法,反復遍歷PQ,直到所有任務調(diào)度完畢。若N遠大于LPQ,隊列中所有節(jié)點獲得任務的概率趨于一致,負載值增長速度也幾乎相同。
為了驗證XCluster的性能,準備了兩臺擁有4核CPU、4 GB內(nèi)存、千兆網(wǎng)絡的物理機,上面安裝Xen,版本為3.4。集群節(jié)點鏡像文件ImmortalTestVm.xva,部署到宿主機后占用1VCPU、1 GB內(nèi)存,且自動運行ImmortalWeb,對外提供三種Web服務:在內(nèi)存中申請一段500 KB的空間,維持15 s后釋放;計算100 000以內(nèi)的質(zhì)數(shù)個數(shù);從外部接收500 KB的隨機字符串,并存入本地,保存成功后刪除文件。它們分別用于增加節(jié)點的內(nèi)存、CPU以及IO的壓力。我們用Nginx與XCluster做對比,前者是由Igor Sysoev開發(fā)的高性能HTTP和反向代理服務器,通過簡單配置就能夠?qū)⒂脩粽埱箅S機轉(zhuǎn)發(fā)到后端節(jié)點。
圖5和圖6分別是Nginx和XCluster在壓力測試下相同后端節(jié)點的量化負載曲線。兩幅圖的上半部分表示虛擬機的量化負載值隨時間的變化曲線,下半部分表示宿主機的量化負載值隨時間變化的曲線。橫坐標表示時間,其中start標記的位置是開始壓力測試的時間,stop標記的位置是停止壓力測試的時間,end標記的位置是集群排空所有任務的時間??v坐標表示量化負載值,由于宿主機的網(wǎng)絡負載和塊設(shè)備讀寫負載對集群影響非常小,不計入負載值,所以宿主機的量化負載值要比虛擬機的小。
Figure 5 Back-end nodes’ load curves using Nginx
Figure 6 Back-end nodes’ load curves using XCluster
由于Nginx沒有控制虛擬機的權(quán)限,故測試之前所有節(jié)點都必須處于運行狀態(tài)。在圖5中,從①、②處可以看出,當外部壓力不大時,負載變化非常小,若增大到一定程度時,四個節(jié)點的負載值幾乎是一同飛快地上漲。這是因為Nginx是隨機轉(zhuǎn)發(fā)請求的,當請求很多時,每個節(jié)點獲得任務的概率就趨于一致了。到了③處,1號節(jié)點因達到連接上限拒絕接受請求,從而被Nginx排除在轉(zhuǎn)發(fā)列表之外,之后不久另外三個節(jié)點接連故障,服務中斷。在④處,四個節(jié)點上的任務都已完成,負載降至最低。到⑤處,Nginx再次做連接測試,將它們重新加入到轉(zhuǎn)發(fā)列表中,服務恢復正常。
在圖6中,0至start是集群系統(tǒng)的啟動階段,ClusterScheduler在2號宿主機上啟動4號備用節(jié)點,并在一個空節(jié)點處導入虛擬機作為新的備用節(jié)點(即2號節(jié)點),同時初始化XenMonitor,這些事件使得①處出現(xiàn)極大值。start至stop是壓力測試階段,在②處,測試壓力使得4號節(jié)點從適載節(jié)點變?yōu)橹剌d節(jié)點,ClusterScheduler啟動2號節(jié)點,部署新的備用節(jié)點(1號節(jié)點)。另外,虛擬機在啟動時,網(wǎng)絡負載不穩(wěn)定,因此量化負載值上下跳動且范圍很大。這段時間新啟動的虛擬機不能分擔壓力,所以4號節(jié)點的負載仍然增長了一小段。在③處,2號節(jié)點達到適載狀態(tài),分擔了大量任務,4號節(jié)點接著也回到適載狀態(tài),與2號節(jié)點交替接收任務,所以在隨后的一段時間里它們負載增幅相似。隨著活動節(jié)點數(shù)量的增加,測試程序并發(fā)的請求數(shù)也相應增加,于是2號、4號節(jié)點再次變?yōu)橹剌d。在④處,ClusterScheduler啟動1號節(jié)點,部署最后一個備用節(jié)點(3號節(jié)點),因此宿主機負載值在這里出現(xiàn)拐點。stop至end是任務排空階段,在⑤處可以看到,所有節(jié)點的負載值都出現(xiàn)了下降的趨勢。在⑥處,2號節(jié)點第一個排空任務,釋放內(nèi)存,宿主機負載值也出現(xiàn)相應的跳躍。在end處,ClusterScheduler依次關(guān)閉了負載較低的2、3、1號節(jié)點,只留下4號作為活動節(jié)點。
對比兩次實驗結(jié)果,XCluster可通過補充備用節(jié)點和活動節(jié)點擴展集群以適應負載的增長。當負載變輕時,又通過關(guān)閉空閑節(jié)點和刪除備用節(jié)點縮小集群釋放資源;Nginx從始至終都是固定的四個節(jié)點。XCluster通過監(jiān)聽虛擬機和宿主機的負載狀態(tài),在適當?shù)臅r機擴展或縮小集群,選擇合適的節(jié)點轉(zhuǎn)發(fā)請求,確保在保證服務不中斷的前提下,整體負載最小;而Nginx只是采用隨機轉(zhuǎn)發(fā)的方式,所以負載值要么長時間沒有變化,要么大起大落。當然,XCluster擴展集群是需要過渡時間的,如果負載增長過快,也會出現(xiàn)服務中斷的現(xiàn)象,只能通過增加MinAN值解決,當MinAN值等于后端節(jié)點數(shù)時,就和Nginx一樣失去擴展和收縮能力了。
負載均衡本是分布式計算機系統(tǒng)研究方向的一個關(guān)鍵和經(jīng)典的問題,而虛擬化技術(shù)的出現(xiàn)改變了人們的傳統(tǒng)觀念,重新從虛擬機層和宿主機層兩個不同的角度去看待這一問題。本文設(shè)計的XCluster系統(tǒng)以Xen為虛擬化平臺,利用其對虛擬機管理的靈活性,根據(jù)負載值自動控制集群規(guī)模從而實現(xiàn)負載均衡。實驗表明,系統(tǒng)能夠根據(jù)負載狀態(tài),在宿主機層控制備用節(jié)點的數(shù)量;在虛擬機層控制適載節(jié)點的數(shù)量,使得它們剛好滿足需要。
[1] Barroso L A,Dean J,Holzle U.Web search for a planet:The Google cluster architecture[J]. Micro, IEEE, 2003, 23(2):22-28.
[2] Hadavandi E, Shavandi H, Ghanbari A, et al.Developing a hybrid artificial intelligence model for outpatient visits forecasting in hospitals[J]. Applied Soft Computing, 2012, 12(2):700-711.
[3] Zhao Chun-yan.Research and implementation of job scheduling algorithm in cloud computing[D].Beijing:Beijing Jiaotong University,2009.(in Chinese)
[4] Barham P, Dragovic B, Fraser K, et al. Xen and the art of virtualization[C]∥Proc of the 19th ACM Symposium on Operating Systems Principles (SOSP’03), 2003:164-177.
[5] Zhang Cong-ping,Yin Jian-wei. Dynamic load balancing algorithm of distributed file system [J]. Journal of Chinese Computer Systems,2011,32(7):1424-1426.(in Chinese)
[6] Liu Han-ling.Research and implementation of dynamic load balancing strategy in distributed system based on web service[D]. Harbin:Harbin Engineering University,2010.(in Chinese)
[7] Kameda H, Fathy S, Ryu I, et al.A performance comparison of dynamic vs.static load balancing policies in a mainframe-personal computer network model[C]∥Proc of IEEE CDC2000, 2000:1415-1420.
[8] Zhang Bin-bin, Luo Ying-wei, Wang Xiao-lin, et al.Whole-system live migration mechanism for virtual machines[J]. Acta Electronica Sinica, 2009,37(4):894-899.(in Chinese)
[9] Mosedole W D,McCool F R. Lessons learned administering netscope’s internet site[J].IEEE Internet Computing,1997,1(2):28-35.
[10] Bryhni H, Klovning E, Kure O.A comparison of load balancing techniques for scalable web servers[J].IEEE Network,2000,14(4):58-64.
[11] Kunz T.The influence of different workload descriptions on a heuristic load balancing scheme[J].IEEE Transactions on Software Engineering,1991, 17(7):725-730.
[12] Lin F C H, Keller R M.The gradient model load balancing method[J].IEEE Transactions on Software Engineering,1987, 13(1):32-38.
[13] Mehrotra R,Dubey A,Abdelwahed S,et al.Large scale monitoring and online analysis in a distributed virtualized environment[C]∥Proc of IEEE International Conference and Workshops on Engineering of Autonomic and Autonomous Systems (EASe),2011:1-9.
[14] Monteiro A F,Azevedo M V,Sztajnberg A.Virtualized web server cluster self-configuration to optimize resource and power use[J].Journal of Systems and Software,2013,86(11):2779-2796.
附中文參考文獻:
[3] 趙春燕.云環(huán)境下作業(yè)調(diào)度算法研究與實現(xiàn)[D].北京:北京交通大學,2009.
[5] 張聰萍,尹建偉.分布式文件系統(tǒng)的動態(tài)負載均衡算法[J]. 小型微型計算機系統(tǒng),2011,32(7):1424-1426.
[6] 劉漢玲.基于WebService的分布式系統(tǒng)中動態(tài)負載均衡策略的研究與實現(xiàn)[D]. 哈爾濱:哈爾濱工程大學,2010.
[8] 張彬彬,羅英偉,汪小林,等.虛擬機全系統(tǒng)在線遷移[J].電子學報,2009,37(4):894-899.
劉勝楠(1981-),男,湖南長沙人,碩士生,研究方向為云計算。E-mail:nanjixing@126.com
LIU Sheng-nan,born in 1981,MS candidate,his research interest includes cloud computing.
Improved dynamic load-balancing strategy of web servers in virtual environment
LIU Sheng-nan1,WANG Shi-lin2
(1.College of Computer,National University of Defense Technology,Changsha 410073;2.Informatization Office,National University of Defense Technology,Changsha 410073,China)
In order to improve the scalability and automation of web cluster servers, we study many cluster systems from the aspects of virtualization and load balancing, propose a load information collection algorithm based on the Xen server virtualization platform, design and implement a modeling system called XCluster which can automatically control the cluster scale according to the load status. A monitoring service in the new model collects and quantifies the loads of the hosts and active nodes in real time. VM controllers will be notified to deploy more VMs from an optimum-load host when light-load nodes are in short supply; however, when there are too many light-load nodes, a number of VMs will be shutdown to release more hardware resources. Theoretical analysis and experimental results show that the XCluster can make full use of the unique capabilities of the virtualization platform which can manage all back-end nodes in an economical way. By scheduling VMs, the clusters can avoid resource waste, yet maintaining the application’s quality of service within an acceptable size.
virtualization;web server;dynamic load-balancing;automation control;cluster;task scheduling
1007-130X(2015)09-1607-07
2014-09-15;
2014-11-11
TP393.027
A
10.3969/j.issn.1007-130X.2015.09.001
通信地址:410073 湖南省長沙市國防科學技術(shù)大學信息中心總體部
Address:Information Center,National University of Defense Technology,Changsha 410073,Hunan,P.R.China