本發明涉及云計算,特別涉及一種云存儲節點負載均衡方法。
背景技術:
云計算作為一種服務,需要向用戶提供可靠、高效的大規模數據服務,并且由服務運營商保證數據的安全性以及可用性。但是,在主流云存儲的mapreduce過程中存儲節點意外失效的概率很大,大規模的云平臺出現過由于存儲節點失效而造成的系統崩潰事件曾經給數以千萬計的企業用戶和個人用戶造成了巨大的損失。因而,容錯技術的發展是為存儲節點中的數據創建多個數據拷貝,并將生成的若干個拷貝按照一定的策略分散存儲到不同的存儲節點上。當存儲節點失效造成數據丟失時,按照策略訪問存儲在有效存儲節點上的有效拷貝恢復數據。所以,只要能從網絡中獲取足夠多的數據塊,就能夠還原出系統所存儲的原始數據,這盡管增加了系統的可靠性,但也成為系統的安全瓶頸。存儲集群彼此間需要依靠外網進行連接,那么必然要向外開放端口,而且,存儲集群之間往往距離較遠,系統很難完全掌控整個系統中存儲集群內存儲節點的狀態,這樣的特點也使攻擊者更容易利用存儲集群的開放性來實現對云的攻擊。
技術實現要素:
為解決上述現有技術所存在的問題,本發明提出了一種云存儲節點負載均衡方法,包括:
將各級存儲節點組成層次化集群網絡,定期監控各節點的負載情況,將所請求的負載均衡分配到各個節點上。
優選地,所述將各級存儲節點組成層次化集群網絡,進一步包括:
主節點維護全部數據拷貝,主節點將所有數據拷貝分配到各個次級節點,次級節點再將數據拷貝分配到下屬節點。
優選地,所述定期監控各節點的負載情況之前,還包括:
將葉節點及其向上的各級父節點構成一個虛擬群組;
所述將請求的負載均衡分配到各個節點,進一步包括,將請求的負載均衡分配到虛擬群組中的各個節點上。
優選地,由云計算環境中設置的負載均衡控制引擎來實現系統訪問性能的全局最優化。
優選地,當用戶通過接口api訪問云存儲環境時,首先查詢全局根數據庫,獲取存儲數據所在的各級存儲節點地址,即某個虛擬群組;
接著請求發起節點根據各個節點存儲的負載情況選擇訪問速度最快的節點;
由負載均衡控制引擎協調系統全局資源分配,通過監控各個存儲節點的請求負載情況,根據資源分配策略調整各節點的請求通行能力,從而優化系統全局訪問性能。
本發明相比現有技術,具有以下優點:
本發明提出了一種云存儲節點負載均衡方法,通過智能負載均衡策略實現了系統訪問性能的全局最優化,并基于安全架構防止非法用戶實現對分布式存儲節點之間的非法存取和攻擊。
附圖說明
圖1是根據本發明實施例的一種云存儲節點負載均衡方法的流程圖。
具體實施方式
下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發明,但是本發明不限于任何實施例。本發明的范圍僅由權利要求書限定,并且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節以便提供對本發明的透徹理解。出于示例的目的而提供這些細節,并且無這些具體細節中的一些或者所有細節也可以根據權利要求書實現本發明。
本發明的一方面提供了一種云存儲節點負載均衡方法。圖1是根據本發明實施例的一種云存儲節點負載均衡方法流程圖。
大規模分布式系統中,即特定區域內的用戶只對特定部分的數據最感興趣,因此在本發明的云存儲環境中,各級存儲節點組成一個層次化集群網絡,主節點維護全部數據拷貝,主節點按照數據所屬地域將所有數據拷貝分配到各個次級節點,次級節點再將數據拷貝分配到下屬節點。葉節點及其向上的各級父節點構成一個虛擬群組。系統負載均衡控制引擎定期監控各節點的負載情況,將各虛擬群組的請求負載分配到虛擬群組內部的各個節點上,實現系統訪問性能的全局最優化。
當用戶通過接口api訪問云存儲環境時,首先查詢全局根數據庫,獲取存儲該數據所在的各級存儲節點地址,即某個虛擬群組。接著請求發起節點根據各個節點存儲的負載情況選擇訪問速度最快的節點。負載均衡控制引擎負責協調系統全局資源分配,通過監控各個存儲節點的請求負載情況,根據資源分配策略調整各節點的請求通行能力。
云計算環境體系結構有以下3個優點:(1)系統數據具有高可靠性。主節點和各級節點的數據互為異地備份。每一個數據有多個拷貝,且拷貝互為異地備份。(2)系統具有很好的容錯性。任何節點的單點故障都不會影響系統運行。例如,當主節點發生故障時,其他拷貝節點可繼續為用戶提供數據訪問服務。(3)系統具有負載均衡能力。主節點和各級節點構成:一個分布式虛擬群組。當某個節點或某條路徑訪問負載高于預設值時,系統自動將訪問請求分配到其他節點上。
在云計算環境多存儲節點有向圖g(v,e)中,如果單位時間內到達系統的總請求數為λ,訪問虛擬群組v的請求數為λv,帶寬分配后到達節點j的請求數為λj,節點j的處理能力為μj,則節點j的平均請求等待時間tj為
并計算得到單位時間內到達節點j的請求數占其最大處理能力的比例即節點資源利用率sj為
用θm,j表示節點j的不同服務等級m下的負載請求變量。云存儲節點資源調度可以分為2個子問題:一是為不同服務等級用戶分配帶寬,使用戶平均請求等待時間最小化。二是節點負載利用率最大化,即充分利用冗余節點實現請求負載均衡。
綜上所述,全局最優化目標為確定負載請求變量θm,j使得不同服務等級業務的平均請求等待時間最小化,同時實現節點資源利用率最大化。
其中n為集群節點總數,m為服務級別數量。
采用線性加權和法將上述目標問題轉換為全局最優資源調度目標函數minz(λ):
minz(λ)=αt(θ1,j)+βt(θ2,j)+γt(θ3,j)-hs(λ)/ε
以存儲節點間的有向連接數作為解空間維度,每一維對應一條有向連接,其取值為分配給該連接的請求流量。每個粒子對應的d維向量x表示系統資源調度問題的一個解,適應度函數為上式所定義的目標函數。
給定一個l層的云存儲集群拓撲圖g(v,e),用l(v)表示節點所屬的層次。用p(vi,vj)表示vj是vi的子節點。對節點進行劃分計算等價關系r(lk)。該r(lk)將某一級節點及其各自所有子節點看作一個粒子,和上級節點歸為同一等價類。當li從1增大到k時,在各個級別層次上構建不同粒度的網絡拓撲,形成分層的解空間鏈。
定義等價關系r(lk)對應的解空間為vk={v1k,v2k…,vnk},k=1,2,…,l。v1表示最粗粒度的空間,即將所有節點集合看做一個粒子v11,vl表示最細粒度的空間,其中的節點集合vl={v1l,v2l…,vnl}和原始云存儲中的節點一一對應。按照節點集合由粗到細得到v1>v2>…>vl的分層的商集。在vk上定義邊集合ek,在層次k的粒度上節點間存在連接的條件為這對粒子包含的子節點在層次l的原始拓撲中存在連接。記存儲集群拓撲解空間為gk(vk,ek),k=1,2,...l。根據節點粒度進行排序,g1>g2>…>gl構成一個分層解空間鏈。
基于上述解空間,逐層對系統負載進行分配。對于位于第k層的某節點vik,其單位時間請求率λ1k為其所有子節點的請求率之和,其請求處理率μ1k為其所有子節點的請求處理率之和。解空間gk中最優分配策略對應的解向量表示為xk。存儲節點負載調度根據以下步驟執行。
1.在構建解空間并構建分層解空間鏈g1>g2>…>gl之后,確定求解最優化算法的粒子群規模m和算法參數,包括慣性因子w、學習因子c和速度閾值s,其中速度閾值s為集群最大負載;。
2.設定最大迭代次數n和迭代終止閾值ε,從第二層解空間開始進行遞歸求解。即k=2;
3.在解空間gk中,根據節點數量vk構建負載請求變量θkm作為解向量xk。使用粒子群算法完成一次搜索,求得本層粒子的一個最優解;査看該空間是否有更細粒度的空間,如果有轉到4),否則轉到5)。
4.進入更細一層解空間gk+1,構建負載請求變量θk+1m,使用兩個粒子群按照不同的策略進行搜索。第一個粒子群中增加上一層空間求得的最優解作為本次求解的約束條件,即由上一層粒子分解而得的各粒子負載之和不超出上一層粒子獲得的最優分配值;第二個粒子群則不增加約束條件進行搜索;當兩個粒子群分別完成最優化搜索之后,比較其最優解。如果不加約束條件的粒子群獲得的解更優,則將該解合成為上一層空間的最優解,重復步驟4),跳轉到上一層空間重新搜索;如果施加約束條件的粒子群獲得的解更優,則該最優解為本層粒子的最優解;査看本層是否有更細粒度的空間,如果有則重復步驟4),跳轉到下一層空間進行搜索,否則轉到5)。
5.完成最細一層解空間,得到原始拓撲空間的負載分配向量。系統根據最優值定義的負載請求變量調度各級服務級別業務請求流量。
在本發明的存儲集群體系結構中,為防止非法數據發送和恢復,設備在發送數據時必須使用地址作為來源,在數據發送過程中,該地址被鑒別,從外網通過開放端口傳入存儲集群內部的數據在沒有被分配合法地址的情況下禁止在存儲集群內部進行轉發。在數據存入系統時,系統為其選擇一個安全服務器的集合作為數據恢復服務器。當存儲節點失效時,只有系統選定的數據恢復服務器才能夠實現數據恢復,而其他服務器即使截獲了發送給數據恢復服務器的數據塊,也無法恢復原始數據。同時采用獨立密鑰服務器,用戶將數據存放于存儲集群時從編碼陣列中選取部分加密信息,并將加密信息分發給獨立密鑰服務器,當需要對失效存儲節點中的數據進行恢復或者是其他數據使用者下載數據時,需要向獨立密鑰服務器提供安全性鑒別,通過鑒別后才能夠從中獲取編碼陣列的加密信息,進而構造解碼陣列恢復失效數據或下載原始數據。
本發明的集群網絡采用分層體系結構,包括集群接入層以及集群網絡層的鑒別,門戶網關負責存儲集群網絡與外網之間的數據交換,并構建不同門戶網關之間的穿越外網的數據通道,并具備來源鑒別功能。每個存儲集群網絡中,設置有一臺dns,當主機接入該存儲集群網絡時,通過向dns發送請求獲取可鑒別的來源,該地址理論上在存儲集群網絡內全局唯一。主機使用該地址向外發送報文,并接受兩層鑒別。
存儲集群網絡外部的合法設備對存儲集群的訪問是通過存儲集群網絡的管理設備完成。未被分配可鑒別來源的外部設備若直接訪問存儲集群網絡,其報文將被鑒別設備過濾。
集群接入層設置在匯聚交換機上利用了交換機的物理地址防偽實現服務器物理地址與ip地址的綁定。集群網絡層設置在存儲集群的門戶網關以及匯聚交換機的上游路由器上,對本數據中心內的存儲節點向外發送的報文的來源進行鑒別,防止存儲集群內的存儲節點發起來源偽造攻擊,并防止來自于同一網絡的其他存儲集群的來源偽造攻擊。
網絡節點由路由器、網關以及交換機組成。網絡節點包括密鑰存儲模塊,用于存儲和更新鑒別來源所必需的密鑰;轉發信息數據庫,用于保存分組轉發所需的路由和交換信息;轉發引擎,用于依據轉發信息數據庫轉發報文;鑒別引擎,用于對來源進行鑒別,只有通過鑒別的報文才被送交轉發引擎轉發。鑒別協議模塊:用于網絡節點間交換來源鑒別信息,是密鑰更新協議和鑒別算法更新;路由交換協議模塊:用于網絡節點間交換轉發信息。
本發明利用散列算法來生成節點的接口id。散列地址的接口id由兩部分組成,存儲節點的存儲集群id和存儲節點id,其中存儲集群id用以實現集群網絡層的存儲集群內驗證,而存儲節點id則用于實現集群接入層鑒別。在每一個存儲集群中存儲節點id必須全局唯一,保證在存儲集群網絡中,每一個存儲節點的接口id是全局唯一的。
散列地址的生成過程包括以下步驟:
1.存儲集群中的存儲節點向dns發出申請。存儲節點向dns發送的申請中包含有存儲節點所屬存儲集群信息、存儲節點管理者信息以及存儲節點物理地址,這些信息用于dns判斷該節點是否具備獲取地址的條件。
2.dns根據存儲節點所在存儲集群為其選擇子網標識。每一個接入子網都被分配一個全局唯一的子網標識,dns依據存儲節點提供的存儲集群所在網絡位置信息選擇與之相對應的子網標識用以生成地址;
3.利用散列算法為存儲節點生成存儲節點id(snid),可表示為:
snid=sha(mac||addrkey)
其中mac為存儲節點物理地址;addrkey為dns所擁有的用于生成和鑒別地址的密鑰,該密鑰存儲在dns以及支持分層來源鑒別的網絡節點的密鑰存儲模塊中。
4.利用散列算法為存儲節點生成存儲集群id(scid),可表示為:
scid=sha(snid||addrkey)
5.檢查該地址是否全局唯一,若該地址已存在,重新生成snid,生成過程可表示為:
snid=(mac||addrkey||addr_rdmpara)
其中addr_rdmpara為dns選取的用以重新生成存儲節點id的隨機參數。若生成的地址全局唯一,則將地址分配給存儲節點使用。
存儲節點向dns申請地址后,集群接入層鑒別過程包括:
1.存儲節點向dns申請地址,并以該地址為來源向外發送數據;
2.匯聚交換機從鏈路層獲取存儲節點的物理地址;
3.匯聚交換機使用addrkey和存儲節點的物理地址,計算發送服務器的存儲節點id如果地址生成過程使用了addr_rdmpara,還需要查詢并使用與該物理地址對應的addr_rdmpara;
4.將計算出的存儲節點id與當前報文中來源的存儲節點id進行比較,若相同則繼續傳輸,反之,則丟棄該報文。
集群網絡層鑒別可分為存儲集群內部鑒別和存儲集群間鑒別兩部分。存儲集群內部鑒別流程包括:
1.路由器從報文中獲取來源的存儲節點id;
2.路由器使用addrkey和報文來源中的存儲節點id計算發送節點的集群id;
3.將計算出的存儲集群id與當前報文來源的存儲集群id進行比較;若相同,則鑒別通過,進行轉發,反之,則丟棄該報文。
存儲集群間鑒別由存儲集群的門戶網關完成,在鑒別過程中,門戶網關一是向由本存儲集群發往其他存儲集群的報文中添加簽名信息,用以表示該報文在集群內己經過鑒別;二是檢查所收到的來自于其他存儲集群的報文是否具有簽名信息,并對簽名信息進行鑒別。
本發明在存儲集群網絡中為所有存儲集群建立一臺管理節點,通過該服務器實現對存儲集群網絡中門戶網關的管理。具體描述如下。
1.門戶網關進行注冊,然后為注冊成功的門戶網關對應分配一個隨機數,為下一步做準備。產生門戶網關的密鑰,即為各門戶網關安全生成并分發私鑰,而門戶網關公鑰是由門戶網關根據其所在存儲集群子網標識和系統共享參數生成的。通過管理節點的主私鑰和門戶網關在上一步得到的隨機數,保證只有擁有合法身份的門戶網關才能獲得對應的私鑰,同時保證門戶網關獲得的私鑰是由管理節點產生。
其中,門戶網關進行注冊過程進一步包括:
(1)管理節點運行初始設置算法。輸入一個安全參數,輸出一系列系統共享參數(包括明文空間、密文空間、哈希函數)、主公鑰kmp和主私鑰kms。主私鑰用來生成門戶網關私鑰。
(2)門戶網關向管理節點發送注冊信息。每臺門戶網關在準備連接到該存儲集群網絡時,都需要先以其所在存儲集群的子網標識作為身份向管理節點進行注冊。
(3)管理節點響應門戶網關注冊請求。管理節點收到主機注冊請求后,記錄下該主機的子網標識,并為其生成一個隨機數rdm。同時,將每個門戶網關的子網標識和分配給該主機的隨機數對應起來,以列表的形式保存,稱該列表為lmac。然后,管理節點將隨機數rdm、主公鑰kmp及系統共享參數發送給門戶網關。
進一步,門戶網關生成并分發私鑰的具體過程為:
(1)門戶網關根據注冊過程中收到的主公鑰和系統共享參數,結合其子網標識,根據基于身份的數字簽名方案計算出門戶網關公鑰kp。
(2)門戶網關用主公鑰kmp對隨機數rdm進行加密,生成加密信息,防止隨機數在發送過程中被篡改。然后,門戶網關把子網標識及該加密信息發送給管理節點,申請門戶網關私鑰。
(3)管理節點收到門戶網關請求后,首先根據信息中的子網標識查找其保存的列表lmac。如果在列表中能找到對應表項,則說明該門戶網關注冊過,進行下一步鑒別;否則,丟棄該請求信息。找到對應的表項后,對收到信息的剩余部分進行解密,將解密得到的信息與對應表項中的隨機數比較。如果匹配成功,則說明請求是由注冊過的合法接入網關發出的,鑒別成功;否則丟棄該請求信息。
(4)鑒別成功后,管理節點根據該門戶網關子網標識和主私鑰kms生成門戶網關私鑰ks。管理節點將該門戶網關私鑰與對應表項的隨機數rdm進行異或運算,然后,使用主私鑰kms對子網標識及異或值進行私鑰運算,將運算結果作為響應信息發送給主機。
(5)門戶網關收到響應信息后,使用之前收到的主公鑰kmp對該響應信息進行鑒別。如果其中的子網標識與門戶網關的子網標識一致,則判定該信息是來自管理節點,將信息的剩余部分與其保存的隨機數進行異或操作,得到私鑰并將其安全保存;否則,丟棄該響應信息,門戶網關重新發送私鑰申請。
2.門戶網關每隔預定的時間將向存儲集群網絡中的其他門戶網關分別發送一個簽名報文,估算出與其他門戶網關通信所需要的時間,即報文從門戶網關發送到其他門戶網關所花費的時間,將該時間記為t,由門戶網關保存。簽名報文生成過程如下。假設f為偽隨機函數,門戶網關使用其密鑰發生器來生成兩個會話密鑰k0、k1并計算f(k0)、f(k1)然后使用門戶網關私鑰對子網標識sp和f(k0)進行簽名,得到簽名報文s,使用k0和集合d1計算一個消息認證碼mack0d1,其中d1為{sp,k0,f(k1)}。將f(k0)和mack0d1作為數據,生成一個報文,并將簽名s添加到報文的擴展首部,將該簽名報文發送給其他門戶網關。
門戶網關收到來自其他門戶網關的簽名信息后,根據主公鑰系統共享參數及源門戶網關的子網標識來計算出一個公鑰kp’。用公鑰對報文擴展首部中的簽名進行鑒別,將得到的子網標識、f(k0)與報文中的子網標識、報文中的數據f(k0)分別進行比較。如果都一致,則鑒別通過,記錄下報文的數據f(k0)、mack0d1及子網標識地址,保存在以子網標識為索引的列表lip。
3.門戶網關在發送完簽名報文后,首先記錄下發送完成的時刻t1。然后生成下一個密鑰k2,計算出f(k2)、mack1d2,其中d2={sp,k1,f(k2)},當門戶網關需要向其他門戶網關轉發報文時,需要在其所轉發的報文的擴展首部中添加{k0,f(k1),mack1d2}。當門戶網關準備轉發報文時,首先計算此時時刻t2與t1的差值δt。如果δt>t,則確定之前發送的簽名報文已經到達目的門戶網關,將這些報文全部轉發出去;否則直到δt>t再發送報文。
門戶網關收到來自其他門戶網關轉發的一組報文后,對其中的每個報文分別進行鑒別:根據報文中的來源的子網標識在表lip中找到對應的f(k0)和mack0d1;再使用報文擴展首部中的k0來計算f(k0),將此計算結果與表lip中的進行比較,如果比較結果一致,則說明傳遞過來的f(k0)是合法的;然后,用f(k0)來鑒別表lip中的mack0d1,如果此鑒別通過,則將報文擴展首部去除后向存儲集群內轉發。
對于該組中第1個鑒別成功的報文,在執行完上述鑒別后,還要在表lip對應表項中添加上f(k1)和mack1d2。對于該組中最后一個被鑒別的報文,還要將表lip對應表項中的f(k0)和mack0d1刪除。對此后收到的該門戶網關的報文,需要執行此鑒別過程。
數據分發到存儲節點的過程,以及數據從有效節點發送給待恢復存儲節點的過程可以看作為一個廣播過程。本發明將將待恢復存儲節點分為可信服務器和非可信服務器,可信服務器可以參與數據恢復,而非可信服務器無法參與數據恢復,同時將用戶也看作為參與到廣播加密中的向可信服務器發送數據的存儲節點,即對數據接收節點進行選擇,只有被選中的節點才能夠對數據進行解碼,確保數據的安全性。
用戶的數據在存儲前將進行編碼,編碼后的數據分為兩類,一類為存儲數據塊,另一類為加密信息數據,其中包含有數據編碼恢復的關鍵信息,其由可信數據恢復服務器存儲,當存儲節點存在失效存儲節點時,系統依據傳輸路徑最優原則從可信數據恢復服務器中選擇若干服務器進行數據恢復,對于非可信數據服務器而言,由于其沒有加密信息數據,所以無法對數據進行編碼恢復。
在用戶將數據提交存儲節點時,存儲節點將數據構造為d×d消息陣列m,利用n×d編碼陣列ψ對m進行編碼,編碼陣列ψ表示為ψ=[φ,δ],其中φ,δ分別為n×k和n×(d-k)陣列,且滿足ψ中的任意d行是線性無關的,φ中的任意k行是線性無關的。
通過編碼可以獲取n個數據片段,并分別存儲于n個存儲節點,每個服務器存儲m/k的數據量,任意k個存儲節點即可以重構原始數據m。
當有r個存儲節點失效后,為了保證數據的可靠性,存儲節點選取大于等于r個可信數據恢復服務器,通過仍然有效的n-r存儲節點來為每個可信數據恢復服務器獲取大于等于d個數據塊用以恢復數據。數據恢復過程可以描述如下:
1.每個可信數據恢復服務器連接d臺存儲節點進行修復,d臺存儲節點是最初由存儲節點分配的存儲節點,或已經完成數據恢復的可信數據恢復服務器;
2.每臺可信數據恢復服務器利用其收到的d個數據塊來產生一個與已失效服務器存儲數據相同的大小為m/k的數據塊。
3.數據恢復完成后,從n個存儲節點中任意選取d個來重構原始數據文件。
綜上所述,本發明提出了一種云存儲節點負載均衡方法,通過智能負載均衡策略實現了系統訪問性能的全局最優化,并基于安全架構防止非法用戶實現對分布式存儲節點之間的非法存取和攻擊。
顯然,本領域的技術人員應該理解,上述的本發明的各模塊或各步驟可以用通用的計算系統來實現,它們可以集中在單個的計算系統上,或者分布在多個計算系統所組成的網絡上,可選地,它們可以用計算系統可執行的程序代碼來實現,從而,可以將它們存儲在存儲節點中由計算系統來執行。這樣,本發明不限制于任何特定的硬件和軟件結合。
應當理解的是,本發明的上述具體實施方式僅僅用于示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。