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