王 鋒,張 璟,張 彤,馬維綱
(西安理工大學 計算機科學與工程學院,西安 710048)
陜西省在101個縣(區(qū))已經(jīng)建立了縣級農(nóng)村飲水安全水質(zhì)監(jiān)測中心,每個水質(zhì)監(jiān)測中心配備了能夠滿足檢測需要的設備、儀器和取樣車,實現(xiàn)了縣級農(nóng)村飲水工程水質(zhì)監(jiān)測網(wǎng)絡全覆蓋.這些檢測信息資源若不能有效收集處理,就會影響主管部門的決策.為此,建立全省范圍的水質(zhì)檢測收集系統(tǒng)很有必要,該系統(tǒng)能為相關部門對農(nóng)村飲用水安全問題做出快速科學的決策與工程實施提供有力支持.要建成該系統(tǒng),需要解決以下問題:1)該系統(tǒng)同時傳輸大量數(shù)據(jù)有共同的特性,若開發(fā)類似的系統(tǒng)需要耗費大量的人力和物力資源,如何合理共享軟硬件資源需要解決的問題.2)該系統(tǒng)有上千個用戶,每個用戶同時提交大量的數(shù)據(jù)集,同時提交的數(shù)據(jù)量達到TB級別,如何實現(xiàn)高效數(shù)據(jù)訪問與資源分配問題.
近幾年國內(nèi)外云計算的發(fā)展可以用“風起云涌”來形容:各大傳統(tǒng)IT運營商紛紛在其核心業(yè)務上推出云計算服務;新興云計算服務提供商不斷推出云平臺基礎架構和管理系統(tǒng),例如OpenStack、CloudStack及Eucalyptus等.
Eucalyptus源于美國政府支持的加州大學圣巴巴拉分校研究項目,已轉(zhuǎn)為Eucalyptus System公司商業(yè)化運作,被HP公司收購,但是其核心代碼仍是開源,為服務提供商及企業(yè)用戶創(chuàng)建私有云或混合云提供了基礎設施服務解決方案.Eucalyptus平臺的API(應用程序接口)可以全面兼容著名云計算平臺Amazon的API,已擁有虛擬化環(huán)境的用戶可使用Eucalyptus云平臺增強自己的虛擬化環(huán)境.Eucalyptus平臺是基于基礎設施服務(IaaS)的,本文的云平臺網(wǎng)絡拓撲結構采用桉樹的EDGE 模式.Eucalyptus提供IaaS級的私有云服務.它由云控制器(Cloud Controller,CLC)、集群控制器(Cluster Controller,CC)、節(jié)點控制器(Node Controller,NC)、存儲控制器(Storage Controller,SC)以及存儲服務(Walrus)組成.云控制器為用戶提供訪問整個云平臺的唯一接口,接受用戶請求,并將請求轉(zhuǎn)發(fā)給具體的服務組件;集群控制器負責管理集群內(nèi)的所有節(jié)點以及所有節(jié)點的資源使用情況和網(wǎng)絡通信情況;節(jié)點控制器部署在具體的計算節(jié)點上,負責監(jiān)控和管理本節(jié)點上的虛擬機的生命周期和資源使用情況;存儲控制器為每一個虛擬機提供虛擬磁盤,安裝存儲控制器的物理機被虛擬化成一個虛擬磁盤池,用戶可為每個虛擬機掛載指定配額大小的虛擬磁盤,并進行遠程網(wǎng)絡IO訪問;Walrus以桶、對象的方式存儲大容量靜態(tài)數(shù)據(jù),為用戶提供上傳、下載、羅列等基本存儲服務.網(wǎng)絡拓撲結構如圖1所示.
圖1 EDGE 模式網(wǎng)絡拓撲結構
多租戶的概念最早起源于軟件領域,指一個軟件實例服務于多個用戶的架構.多租戶作為云計算的核心計算,它解決了在相同的系統(tǒng)資源或軟件應用中實現(xiàn)多用戶共同訪問和使用.同時應該保證系統(tǒng)安全性,并確保多用戶之間數(shù)據(jù)的相互隔離.在數(shù)據(jù)層面,需要切割數(shù)據(jù)庫實現(xiàn)多租戶的數(shù)據(jù)管理[1–3].
21世紀的今天,云計算已經(jīng)成為 IT 領域一個新浪潮.各大云計算廠商紛紛推出了自己的云戰(zhàn)略,SalesForce的force.com是面向特定領域(CRM),其領域客戶需求共性明顯,因此采用共享數(shù)據(jù)表和Shared Everthing架構非常合適并取得巨大成功.Windows Azure 以云技術為核心提供了軟件+服務的計算方法.SQL Azure采用共享數(shù)據(jù)庫進程模式.Amazon推出彈性計算云(EC2)為企業(yè)提供計算服務,和簡單存儲服務(S3)為企業(yè)提供存儲服務.Google搜索引擎建立分布在全球 200 多個國家和地區(qū),超過 100 萬臺服務器的云計算環(huán)境下.在 Google 的眾多應用中,多租戶作為云計算的核心技術得到了更為廣泛的應用,比如我們經(jīng)常使用的 Google Docs,Google App Engine 等應用,都是多租戶技術在實際應用中的應用體現(xiàn).
國內(nèi)主流的SaaS提供商有Xtools、阿里軟件、800app、金算盤等.
隨著云計算的興起和推廣應用,多租戶技術也越來越成熟,借助多租戶技術來架構農(nóng)村飲水規(guī)劃調(diào)查系統(tǒng),是農(nóng)村飲用水規(guī)劃調(diào)查快速提升信息化水平的捷徑.本文正是基于這樣的背景來研究如何在農(nóng)村飲用水規(guī)劃化系統(tǒng)中引入多租戶模式,提升農(nóng)村飲用水檢測信息化水平,降低農(nóng)村信息化投入成本和維護成本,提高農(nóng)村飲用水質(zhì)量.“陜西省農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫系統(tǒng)”利用Eucalyptus云計算平臺,建立一個多租戶的共享數(shù)據(jù)庫共享schema水資源檢測系統(tǒng)能解決目前存在的難題.
“陜西省農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫系統(tǒng)”在Windows環(huán)境下實現(xiàn)了農(nóng)村飲用水安全的工程調(diào)查信息在網(wǎng)上的傳輸、轉(zhuǎn)換、處理、匯總、查詢、分析,為省政府和相關部門在對農(nóng)村飲用水安全問題做出快速科學的決策與工程實施提供了強有力的支持.系統(tǒng)主要包括數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)審核、數(shù)據(jù)對比等12個功能模塊.多租戶水利系統(tǒng)部署拓撲如圖2所示.農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫系統(tǒng)的Web 前端和數(shù)據(jù)庫.
圖2 數(shù)據(jù)庫系統(tǒng)部署拓撲圖
單獨部署,每個租戶都有自己Web虛擬機,分配有公有IP,每個租戶都有自己安全組和防火墻強規(guī)則,租戶的Web服務器放在自己的安全組里,不同租戶的Web虛擬機網(wǎng)絡二層不通.
普通租戶可以共享數(shù)據(jù)庫服務器,高級租戶獨享數(shù)據(jù)服務器.所有數(shù)據(jù)庫在同一安全組,設定相應的防火墻規(guī)則.整個系統(tǒng)部署在一個Eucalyptus Account內(nèi).Web虛擬服務器使用instance-store 的鏡像,在啟動虛擬機通過user-data 自動把要使用的數(shù)據(jù)庫信息傳給Web server.MSSQL虛擬機可以使用EBS-base的鏡像(20 G),同時分配EBS volume用作數(shù)據(jù)盤.
數(shù)據(jù)庫設計是多租戶實現(xiàn)上的最重要技術.租戶與租戶之間的數(shù)據(jù)需要相互隔離保證數(shù)據(jù)的安全性[4].由于各租戶數(shù)據(jù)之間有共同的數(shù)據(jù)特性,所以多租戶數(shù)據(jù)的存儲方式采用共享數(shù)據(jù)庫共享模式(又稱共享模式).
在數(shù)據(jù)庫表設計方面,本系統(tǒng)采用多個租戶使用相同的數(shù)據(jù)庫和相同的表.為了將不同租戶的數(shù)據(jù)進行隔離,所有表包含一個Water_id字段.在查詢或存儲表數(shù)據(jù)時,需要應用Water_id字段對數(shù)據(jù)進行強制隔離.數(shù)據(jù)庫表舉例:以下兩張表是本數(shù)據(jù)庫用到的主要表.表1和表2有共同的租戶字段Water_ID,表1是村莊信息表,查詢該表信息需輸入租戶Water_ID;表2為飲水點情況表,所有租戶的檢測信息都存放在該表中,租戶之間的通過租戶Water_ID進行隔離.當租戶需要對自己的業(yè)務數(shù)據(jù)操作時,每條操作SQL條件語句需要增加Water_ID=‘?’區(qū)分不同租戶,防止其它租戶讀取本租戶信息.通過租戶Water_ID可以將表1和表2聯(lián)系起來.
表1 村莊信息表
表2 飲水點情況表
例如:查詢租戶號001的隔離語句如下:
當一個新租戶加入時,根據(jù)租戶的用戶數(shù)和服務質(zhì)量要求需要計算為租戶分配的資源數(shù)量,資源數(shù)量用于保障租戶的服務質(zhì)量,租戶放置算法將新加入的租戶放置到資源節(jié)點上,使之既滿足租戶的資源需求,同時使資源供應商的資源利用率最大化.對于應用放置方面,文獻[5,6]對于多租戶資源動態(tài)分配策略進行研究,文獻[7]對多租戶安全資源分配算法和安全服務調(diào)度框架進行研究.文獻[8]對多租戶系統(tǒng)進行動態(tài)的擴展,運用裝箱策略管理多租戶云應用程序中的存儲資源.文獻[9]應用遺傳算法對Android設備驅(qū)動程序的未知安全漏洞進行檢測.文獻[10]以完工時間、機器能耗和工人操作機器的舒適度作為柔性作業(yè)車間調(diào)度問題的多目標函數(shù),利用改進遺傳算法對其進行優(yōu)化研究.本文在以往的研究基礎上提出了多租戶改進遺傳放置算法(Multi-tenant Improved Genetic Placement Algorithm,MIGPA).既滿足租戶的資源需求,同時使資源利用率最大化.
通過MIGPA將租戶放置到合適的虛擬機中,生成租戶放置到服務器的序列.本文采用裝箱問題中基于群體的編碼方式,對租戶從1,2到n進行編號,采用字母A-Z來表示服務器的編號.若有租戶1,2,3,4,5,6,7;服務器A,B,C,D,E,F.若租戶2,4,6放置到服務器B上,則有B={2,4,6};租戶1,3放置到服務器A上,則有A={1,3};租戶5,7放置到服務器C上,則有C={5,7};則染色體可以記為BAC(B={2,4,6},A={1,3},C={5,7}).執(zhí)行多次租戶放置算法形成多個染色體,用遺傳算法實現(xiàn)租戶占用的服務器資源最少及利用率最高.多租戶數(shù)據(jù)庫系統(tǒng)主要由外部負載、數(shù)據(jù)庫節(jié)點和租戶數(shù)據(jù)庫副本等幾方面構成,其參數(shù)主要包括用于描述節(jié)點、租戶以及負載的基本參數(shù)使用的一些符號如表3所示.
表3 基本參數(shù)
本系統(tǒng)為實現(xiàn)服務器資源利用率最大化,設計了多租戶改進遺傳放置算法(MIGPA)算法.其中部分參數(shù)含義見表3,其余參數(shù)表示如下:Pc:交叉發(fā)生的概率;Pm:變異發(fā)生的概率;M:種群規(guī)模;Gen:終止進化的代數(shù);Tf:進化產(chǎn)生的任何一個個體的適應度函數(shù)超過Tf,則可以終止進化;適應度函數(shù),N是服務器數(shù)量;OldPop表示舊種群;NewPop表示新種群.
算法.多租戶改進遺傳放置算法Procedure BFD初始化Pc、Pm、M、Gen、M 0.8=>Pc 0.09=>Pm 30=>M 20=>Gen 0=>i=>j初始化服務器剩余資源S[n]={S1,S2,…,Si,…,Sn}X個租戶加入隊列Q
while(隊列Q不為空)租戶出隊T[i]=隊列Q的隊頭出隊while(j 本文研究租戶放置算法目的是在保障租戶服務質(zhì)量的前提下提高服務器資源利用率.采用虛擬化的方法,在租戶資源分配初期為租戶分配合適的資源量,并通過租戶放置算法提高服務器使用率,減少租戶部署時期的物理服務器的使用數(shù)量,降低服務供應商的成本.本系統(tǒng)通過以下幾個實驗進行測試,搭建的測試環(huán)境如下. 硬件:CC和SC部署在一臺IBM X3850服務器;CLC和Walrus部署在一臺IBM X3850服務器;NC節(jié)點使用30臺IBM 3550服務器;所有服務器安裝centos6.5操作系統(tǒng);系統(tǒng)運行于NC節(jié)點的虛擬機;本次測試采用LoadRunner. 實驗一.優(yōu)化過程實驗. 測試放置算法的優(yōu)化過程.用LoadRunner模擬注冊50個租戶,每個租戶用戶數(shù)在10–50之間,系統(tǒng)響應時間為0.1到2 s,農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫系統(tǒng)產(chǎn)生90個虛擬機分配給90個租戶.放置程序需要將90個虛擬機放置到30臺服務器中.90個租戶的用戶并發(fā)訪問水利管理系統(tǒng).采用Matlab實現(xiàn)遺傳算法,設置交叉概率為0.8,變異概率為0.09,種群的個數(shù)為30,遺傳代數(shù)為20.圖3顯示了將90個租戶放置到30臺服務器的優(yōu)化過程.進化次數(shù)越多,物理服務器占用的個數(shù)就越少.在20代之前,物理服務器數(shù)量變化較大,之后就逐漸穩(wěn)定.租戶放置算法很快得到了最優(yōu)解. 實驗二.占用服務器資源實驗. 在滿足租戶服務質(zhì)量要求的基礎上,采用Next Fit,Best Fit兩種啟發(fā)式算法同本文提出MIGPA進行比較,使得需要的服務器數(shù)量最少. Next Fit(NF)算法:將租戶和服務器編序號,按照租戶序號依次放置到各個服務器中,若低序號服務器資源不夠,則依次比較是否能放入下一個高序號服務器中,直到放置完成. Best Fit(BF)算法:將租戶和服務器編序號,依次將租戶放置到剩余資源最少且能放置該租戶的物理服務器中. 在25臺服務器上放置租戶.四種租戶放置算法的比較結果如表4所示.本文提出的MIGPA同NF、BF和貪心算法相比,使用的物理服務器數(shù)量最少,當租戶數(shù)量達到90個時,NF算法的服務器已經(jīng)不能繼續(xù)放置租戶了.但是隨著租戶數(shù)量增多,MIGPA優(yōu)勢越來越明顯. 表5 占用服務器資源實驗 實驗三.服務器資源利用率實驗. 進一步測試MIGPA的CPU資源利用率.選取3臺服務器Server1、Server2和Server3,測試時間為30小時,實驗結果表明MIGPA可以為租戶搜索到合適的服務器,CPU資源利用率高,滿足租戶的服務質(zhì)量要求.結果如圖3所示. 本文應用Eucalyptus的EDGE 網(wǎng)絡模式建立了云平臺,分析了多租戶共享數(shù)據(jù)庫模式系統(tǒng)的設計與實現(xiàn),提出了多租戶改進遺傳放置算法,并和Next Fit、Best Fit和貪心算法進行比較,本文提出的放置算法在隨著租戶數(shù)量增加,使用的服務器數(shù)量會相對減少,提高了資源利用率,為租戶提供了滿意的服務質(zhì)量.通過實驗證明了本文提出的MIGPA可以較好地保證租戶服務質(zhì)量并提高服務器資源利用率. 圖3 MIGPA服務器CPU資源利用率實驗4 性能測試
5 結論