本發明涉及一種基于虛擬化技術的虛擬數據中心資源提供方法,屬于計算機應用技術領域。
背景技術:
在云計算時代下,隨著社會對于計算需求的不斷擴大,數據中心的規模也在迅速變大。在龐大的數據通信量的背后,數據中心本身的資源平均利用率卻非常低下,大部分設備都空閑,給數據中心增加了巨大的能耗負擔。所以目前,數據中心使用虛擬化技術,可以有效降低數據中心能耗,提高數據中心的資源利用率。而虛擬數據中心的提出是一種在云計算服務的基礎上形成的提供可快速自動化部署、實時響應、即時租用、按需分配和動態資源擴展的彈性式自助式服務的業務類型。在這種新趨勢下,每個租戶的資源請求可抽象為一組虛擬機(virtualmachine,簡稱vm)構成的虛擬數據中心(virtualdatacenter,簡稱vdc),每個虛擬機對應一定的資源(包括cpu、內存以及硬盤等),同時為了傳遞數據和中間文件,虛擬機之間也需要建立具有帶寬保障的通信鏈路,以滿足虛擬機之間通信的需求。由于虛擬機放置與虛擬機間通信帶寬以及路由選擇的緊耦合,使得把虛擬數據中心映射到底層物理網絡的這個過程變得非常復雜。在虛擬數據中心映射過程中,需要考慮的主要因素包括可靠性、物理計算資源使用情況、網絡帶寬消耗以及物理設施的能耗。當前的虛擬數據中心映射的主要趨勢是在虛擬數據中心的創建過程中,盡可能地使虛擬機均勻分配到各個物理服務器上,從而達到虛擬機之間的影響最低,并實現底層物理設施的負載均衡的情況。但是,對于虛擬數據中心的映射如果僅僅是做成簡單的負載均衡并不能滿足和適用于所有的應用場景,比如在對通信帶寬有高需求的應用場景下,這種直接將各個虛擬機打散并隨機負載到各個服務器上的做法無疑會加重網絡通信的負擔,各個虛擬機之間的數據通信會轉變為計算節點之間的網絡通信,這樣產生的后果是在物理的鏈路當中產生大量的網絡流量,占用極大的網絡帶寬,從而導致網絡資源消耗過高。并且,這種分散式的映射方式會導致一種大量服務器以低負載狀態投入生產的情況,從而產生極大的能源浪費,違反了云計算綠色節能的理念。
技術實現要素:
為了克服上述不足,本發明實現了一種基于虛擬化技術的虛擬數據中心資源提供方法。在某個物理服務器上最大可能的部署該虛擬數據中心中的多個虛擬機,使虛擬機之間的鏈路消耗最小化。在進行虛擬數據中心映射時,從能耗和帶寬消耗的角度來看,虛擬數據中心中所有的虛擬機要盡可能整合,占用盡可能少的物理服務器,這樣節省了服務器間的帶寬消耗,且其他不用的物理服務器就可以關閉從而到達節能的目標。該方法實現了對于底層物理資源的管理和網絡的虛擬化,用戶可以利用本項發明提供的前端頁面實現如下功能:簡單快速的生成虛擬數據中心的模板并向系統提交;修改目前已有的虛擬數據中心的配置;刪除目前已有的虛擬數據中心。從而使初學者能夠簡單方便地使用基于虛擬化的網絡資源,并在其上部署sdn交換機與控制器,快速的搭建出一套虛擬數據中心環境。
本發明的技術方案:
一種基于虛擬化技術的虛擬數據中心資源提供方法,分為用戶交互層、邏輯控制層和資源供給層;
用戶交互層負責接收用戶請求、對于虛擬網絡的網絡拓撲創建請求的接受以及網絡拓撲信息的展示;用戶由前端進行登錄,并提交對于底層網絡部署的相關操作,并將數據發送到服務器端;前端由flex和actionscript語言實現,flex負責網頁的構造和美化,actionscript負責網頁功能的實現與服務器端交互;
邏輯控制層是管控層,負責接受、處理用戶交互層發送的數據以及與數據庫進行交互;邏輯控制層用java語言實現代碼邏輯,同時應用spring框架的依賴注入及聲明式事務來管理邏輯控制層的對象的初始化和進行事務管理;其中,數據庫負責存儲邏輯控制層接收到的虛擬數據中心的網絡拓撲的相關信息,以供用戶交互層查詢使用;用戶交互層和邏輯控制層通過blazeds訪問遠程服務接口實現通信,blazeds是一個基于服務器的java遠程調用和web消息傳遞,使得邏輯控制層的java應用程序和運行在瀏覽器上的flex應用程序相互通信;而邏輯控制層通過mybatis和spring框架對數據庫進行存取,mybatis和spring之間通過mybatis-spring進行整合,使用mybatis-spring類庫中的類,spring加載必要的mybatis工廠類和session類;通過mybatis-spring類庫將mybatis數據映射器和注入sqlsession映射bean中,實現邏輯控制層對數據庫的操作;
邏輯控制層還負責與資源供給層通信,邏輯控制層通過向資源供給層的openstack的restapi接口發送http請求進行交互;資源供給層通過運行的各種config腳本進行請求的接受和處理,并完成對資源的管理,并將返回結果以http請求的方式返回給邏輯控制層模擬數據流量的轉發和交換。
a.上傳虛擬數據中心網絡拓撲
a1.根據用戶確定創建的虛擬數據中心網絡拓撲,創建虛擬機、交換機和控制器的組件;并且設置各個組件的配額,主要包括虛擬機的cpu數量,內存的大小,交換機的種類,控制器的版本;
a2.創建鏈路,根據所需網絡拓撲連接虛擬機、交換機和控制器,其中,控制器只能連接交換機,控制器和虛擬機之間不存在連接鏈路,并且在創建鏈路的過程中需要對鏈路的帶寬配額進行設置;
a3.數據傳遞,在flex語言下建立虛擬機、交換機、控制器、網絡鏈路對象,并且用配額參數來填充其屬性,之后通過使用remoteobject遠程調用觸發函數的方法進行對象的傳遞,將所需要的數據以對象的形式傳遞給邏輯控制層;
b.采集和創建虛擬數據中心網絡拓撲
b1.邏輯控制層的remoteobject函數被調用,此時邏輯控制層獲取到了以對象方式傳遞過來的數據;
b2.邏輯控制層確定采集的數據中心網絡拓撲信息,包括控制器、交換機、虛擬機和網絡鏈路相關信息,判斷拓撲組件當中的配額信息,如虛擬機的cpu數量以及內存大小,鏈路的帶寬大小,交換機和控制器的種類和版本;進一步在內存中建立對應的對象,用于存放數據;
b3.確定拓撲信息和配額信息后,通過vc-ace(virtualclusters-actualclustersembedding)算法,將虛擬數據中心的網絡拓撲映射到物理資源當中,并得到映射算法的匹配結果;具體如下:
b31.收集網絡拓撲當中的每個組件的配額信息,將其抽象成一個虛擬集群模型vc(n,b,c),其中,n表示虛擬機的集合,c表示虛擬機單機的處理性能,b表示每個虛擬機的進出口帶寬總和;
b32.邏輯資源層查看物理資源的使用情況,并抽象為集合s,其中s=(vs,es,cap,cost),vs表示物理服務器節點的集合;es表示物理服務器之間的鏈路的集合;cap表示物理環境下的各項資源的總容量;cost表示當前物理環境下的資源實際消耗情況。
b33.vc和s一并輸入到vc-ace算法中,得到映射結果:mapv:vvc→vs,表示虛擬機與物理服務器點對點映射結果;mape:evc→es,表示虛擬網絡鏈路與真實物理網絡鏈路的映射結果。由于vc-ace是一種聚合優先的算法,其主要功能是將同一個拓撲中的相似節點盡可能的匯聚,這樣可以使得虛擬數據中心中所有的虛擬機盡可能地在物理服務器當中聚合,占用盡可能少的物理服務器數量,從而提高了資源利用率,并且此時一些未使用的服務器可以下電了,故也同時降低了總的能源消耗。
b4.向資源供給層下發資源創建指令,因為邏輯控制層和資源供給層的交互方式是通過http請求的方式實現的,所以拼接資源創建指令就是拼接http請求。不同的資源創建指令需要拼接不同的http請求,http請求拼接具體過程是:首先確定http請求類型(包括post,get,delete),在確定了http請求類型之后,再將需要請求的信息內容加入到http中,這樣一條完成的http請求就拼接完成了。
b5.資源供給層在收到來自用戶交互層發送來的http請求時,首先進行格式的判斷,若是格式不正確則直接返回錯誤,不再進行下一步的操作;若格式正確,此時資源供給層解析http請求,獲取請求信息的類型,并進行資源的創建,然后將需要返回的信息封裝為json格式的字符串并返回給邏輯控制層。
b6.邏輯控制層在獲取到來自資源供給層的返回信息后,進一步對其進行解析。由于返回的數據是json格式,所以其解析過程是在邏輯控制層的服務器中定義一個map對象用來接收并裝載返回的json字符串,并且通過map對象取出json中存入的對象,最后再調用數據庫的操作方法將信息更新到數據庫當中。
c.展示虛擬數據中心網絡拓撲
c1.用戶選擇需要查看的網絡拓撲,此操作發生在用戶交互層。
c2.用戶交互層根據用戶選擇的網絡拓撲作為參數進行remoteobject的遠程觸發函數的調用獲取到數據中所需的拓撲信息的當前值,其結果以對象的形式返回至用戶交互層,若不存在則直接返回空。
c3.用戶交互層接收到返回的數據之后,從其中取出封裝的對象,直接在網頁上進行展示。
本發明的有益效果:本發明不僅實現了一種基于虛擬化技術的虛擬數據中心資源提供方法。并且針對能耗和資源的利用上進行了優化,在某個物理服務器上最大可能的部署該虛擬數據中心中的多個虛擬機,使虛擬機盡可能聚集。在進行虛擬數據中心映射時,從能耗和帶寬消耗的角度來看,虛擬數據中心中所有的虛擬機要盡可能整合,占用盡可能少的物理服務器,這樣節省了服務器間的帶寬消耗,且其他不用的物理服務器就可以關閉從而到達節能的目標。
附圖說明
圖1是本發明的整體架構圖。
圖2是本發明的虛擬數據中心網絡拓撲上傳的流程圖。
圖3是本發明的虛擬數據中心網絡拓撲的采集和創建流程圖。
圖4是本發明的虛擬數據中心網絡拓撲展示流程圖。
具體實施方式
以下結合附圖和技術方案,進一步說明本發明的具體實施方式。
整個解決方案的架構如圖1所示,整體架構主要分為三個層次,用戶交互層,邏輯控制層,資源供給層。其中用戶交互層負責接收用戶請求,用戶由前端進行登錄,并提交自己對于底層網絡部署的相關操作,并將數據發送到服務器端,同時,該層也主要負責對于虛擬網絡的網絡拓撲創建請求的接受,以及網絡拓撲信息的展示。前端主要由flex,actionscript語言實現,其中flex負責網頁的構造和美化,actionscript負責網頁功能的實現,同時還負責與服務器端交互數據。邏輯控制層是整個平臺的管控層面。邏輯控制層在接受到用戶交互層發送來的數據之后通過編寫好的處理邏輯對其進行處理,并與數據庫模塊進行交互。邏輯控制層主要用java語言實現代碼邏輯,同時應用了spring框架的依賴注入及聲明式事務來管理邏輯控制層的對象的初始化和進行事務管理。數據庫部分主要是負責存儲邏輯控制層接收到的vdc虛擬數據中心的網絡拓撲的相關信息,以供用戶交互層查詢使用。用戶交互層和邏輯控制層通過blazeds訪問遠程服務接口實現通信,其中blazeds是一個基于服務器的java遠程調用和web消息傳遞技術,使得邏輯控制層的java應用程序和運行在瀏覽器上的flex應用程序能夠相互通信。而邏輯控制層通過mybatis和spring技術對數據庫進行存取操作,mybatis和spring之間通過mybatis-spring進行整合,使用mybatis-spring類庫中的類,spring將會加載必要的mybatis工廠類和session類。這個類庫也提供一個簡單的方式來注入mybatis數據映射器和sqlsession到業務層的bean中,這樣就實現了邏輯控制層對數據庫的操作。同時,邏輯控制層還要負責與資源供給層通信,邏輯控制層通過向底層的openstack的restapi發送http請求進行交互。資源供給層通過運行的各種config腳本進行請求的接受和處理,并完成對資源的管理,并將返回結果以http請求的方式返回給邏輯控制層。
圖2是本發明的虛擬數據中心網絡拓撲上傳的流程圖,描述了本方法定義的虛擬數據中心網絡拓撲的上傳過程。第一步是用戶確定所需拓撲;第二步是創建組件,其中主要包括虛擬機、交換機、控制器,本法步驟在用戶交互界面的網頁上進行,主要操作是用戶通過拖拽將組件放置于主面板中,當所有組件都完成創建之后進行下一步。第三步是檢查是否有連接鏈路的需求,如果是的話,則進行鏈路的創建,鏈路創建必須滿足這三種情況:虛擬機與交換機,交換機與交換機,交換機與控制器,否則就是非法鏈路,無法進行創建。以上三步一直循環,知道沒有可以創建的組件和鏈路為止,之后執行下一步。第四步,當所有組件和鏈路都已經創建完畢時,生成所有創建的組件和鏈路對應的flex前臺對象。第五步,通過調用遠程觸發函數,將所有這些拓撲的數據以對象的形式傳遞給邏輯控制層。
圖3是本發明的虛擬數據中心網絡拓撲的采集和創建流程圖,描述了邏輯控制層對拓撲數據的采集和根據采集結果進行分析和對資源進行創建的過程。第一步是邏輯控制層的遠程觸發函數唄調用,其數據處理進程被喚醒。第二步是接收來及用戶交互層的數據并以對象的形式存放在服務器的本地內容當中。第三步分為兩個分支,其一是邏輯資源層收集網絡拓撲當中的每個組件的配額的數據,將其抽象成一個虛擬集群模型vc(n,b,c),其中n表示虛擬機的集合,c表示虛擬機單機的處理性能,b表示每個虛擬機的進出口帶寬總和,邏輯資源層查看物理資源的使用情況,并將真實的物理環境中的資源也抽象為集合s,其中s=(vs,es,cap,cost),cap表示物理環境下的各項資源的總容量;cost表示當前物理環境下的資源實際消耗情況。第四步,將vc和s兩個模型作為輸入參數遞交給網絡拓撲數據處理模塊,網絡拓撲數據處理模塊調用vc-ace算法進行虛擬數據中心資源和實際物理資源的映射進行計算。由于vc-ace是一種聚合優先的算法,其主要功能是將同一個拓撲中的相似節點盡可能的匯聚,這樣可以使得虛擬數據中心中所有的虛擬機盡可能地在物理服務器當中聚合,占用盡可能少的物理服務器數量,從而提高了資源利用率,并且此時一些未使用的服務器可以下電了,故也同時降低了總的能源消耗。第五步,如果輸入的參數沒有任何異常,則得到計算的映射結果。mapv:vvc→vs,表示虛機與物理服務器點對點映射結果。mape:evc→es,表示虛擬網絡鏈路與真實物理網絡鏈路的映射結果。,否則跳回第一步。第六步,根據得到的計算結果進行下發指令的生成,因為邏輯控制層與資源供給層的交互主要是通過http請求的方式,即此時的執行下發就是在拼接http請求并發送給資源供給層。第七步,資源供給層在接收到邏輯控制層發送的http請求之后,解析http請求的內容,并進行http請求的合法性驗證,若驗證合法就進行下一步,否則返回錯誤信息給邏輯控制層,并且調回到第六步。第八步,按照http請求的內容進行資源的創建,其中的資源主要以json鍵值對的形式存放,資源供給層的config進程按照解析獲得的鍵值對直接調用對應的openstack底層restapi借口下發創建命令,并且在創建完成之后將資源創建結果同樣以http請求的形式返回給邏輯控制層。第九步,邏輯控制層根據返回的http請求結果進行解析,并根據解析的結果在服務器端的內存中建立對象以存放返回結果的數據,之后根據結果對數據庫的表進行更新。至此,整個拓撲的創建過程完畢。
圖4是本發明的虛擬數據中心網絡拓撲展示流程圖,描述了用戶交互層進行虛擬數據中心網絡拓撲展示的過程。第一步,用戶選擇需要查看的網絡拓撲。第二步,用戶交互層根據用戶選擇的網絡拓撲作為參數,調用remoteobject遠程觸發函數。第三步,邏輯控制層接感應到觸發函數被調用,并作出回應。第四步,邏輯控制層根據觸發函數中傳遞過來的參數進行數據庫的訪問,并進行數據的查詢,如果查詢成功則進行下一步,否則返回第一步。第五步,邏輯控制層根據數據庫返回的表項在內存中建立對應的對象,并將數據以封裝好的對象的形式傳遞給用戶交互層。第六步,用戶交互層獲取到數據,并解析從中獲取到封裝的對象。第七步,直接使用封裝好的對象導入到對應的actionscript當中,進行網頁上展示。