應用于云計算虛擬化服務器集群的負載均衡的系統及方法
【技術領域】
[0001] 本發明涉及信息管理領域,尤其涉及云計算,具體是指一種應用于云計算虛擬化 服務器集群的負載均衡的系統及方法。
【背景技術】
[0002] 當前,服務器負載均衡產品各種各樣,有硬件的,有軟件的,典型的如Linux的 LVS。算法也千差萬別,常見的有隨機,輪叫調度,最小連接調度,源地址散列調度,動態反饋 等。
[0003] 然而,這些算法普遍適合Web服務器,數據庫服務器等。對虛擬化服務器集群來 說,負載均衡的目的是要選擇最適合運行虛擬機的服務器,均衡的對象是虛擬機。相比Web 或數據庫服務器處理請求和返回應答來說,虛擬機啟動后,在服務器上常常占用的資源時 間要長,要多。另外,每臺虛擬機申請和占用的資源(CHJ和內存)也是不一樣的。因此,虛 擬化服務器負載均衡算法不能簡單的根據連接數(或請求數)來選擇服務器,而必須根據 服務器的負載情況和總體資源情況來選擇最適合虛擬機運行的服務器。
[0004]現有的負載均衡算法無法最優化地選擇出最適合虛擬機運行的服務器。
【發明內容】
[0005]本發明的目的是克服了上述現有技術的缺點,提供了一種能夠實現的應用于云計 算虛擬化服務器集群的負載均衡的系統及方法。
[0006] 為了實現上述目的,本發明的應用于云計算虛擬化服務器集群的負載均衡的系統 及方法具有如下構成:
[0007] 該應用于云計算虛擬化服務器集群中的智能資源調度的負載均衡的系統,其主要 特點是,所述的系統包括:
[0008]數據采集模塊,用于獲取各個虛擬化服務器中的相關參數;
[0009]數據模塊,用于存儲所述的數據采集模塊獲取的相關參數;
[0010] 計算模塊,用于根據存儲于數據模塊的相關參數計算如果待運行的虛擬機在各個 虛擬化服務器上運行,各個虛擬化服務器的綜合理論負載;
[0011] 調度模塊,用于根據計算模塊的計算結果,選擇綜合理論負載最小的虛擬化服務 器,以運行該待運行的虛擬機。
[0012] 本發明還涉及一種應用于云計算虛擬化服務器集群中的智能資源調度的負載均 衡方法,其主要特點是,所述的方法包括:
[0013] (1)數據采集模塊獲取各個虛擬化服務器中的相關參數并存儲于數據模塊;
[0014] (2)計算模塊根據存儲于數據模塊的相關參數計算如果待運行的虛擬機在各個虛 擬化服務器上運行,各個虛擬化服務器的綜合理論負載;
[0015] (3)調度模塊根據計算模塊的計算結果,選擇綜合理論負載最小的虛擬化服務器, 以運行該待運行的虛擬機。
[0016] 進一步地,所述的數據采集模塊獲取各個虛擬化服務器中的相關參數,具體包括 以下步驟:
[0017] (1. 1)所述的數據采集模塊獲取各個虛擬化服務器的運行狀態以及各個虛擬化服 務器的總資源的大小;
[0018] (1. 2)所述的數據采集模塊周期性地獲取各個虛擬化服務器的各個資源的平均使 用率;
[0019] (1. 3)所述的數據采集模塊獲取各個虛擬化服務器上運行的各個虛擬機請求的資 源的大小。
[0020] 更進一步地,所述的步驟(2)具體包括以下步驟:
[0021] (2. 1)所述的計算模塊根據所述的數據采集模塊獲取的各個虛擬化服務器的運行 狀態選擇正在運行的虛擬化服務器;
[0022] (2. 2)所述的計算模塊從所述的正在運行的虛擬化服務器中選擇負載符合要求的 虛擬化服務器;
[0023] (2. 3)所述的計算模塊計算虛擬化服務器的綜合理論負載。
[0024] 再進一步地,所述的計算模塊根據所述的數據采集模塊獲取各個虛擬化服務器的 運行狀態選擇正在運行的虛擬化服務器,具體包括以下步驟:
[0025] (2. 1. 1)所述的計算模塊根據所述的數據采集模塊獲取的各個虛擬化服務器的運 行狀態判斷正在運行的虛擬化服務器的個數;
[0026] (2. 1. 2)如果所述的虛擬化服務器的個數為0,則所述的計算模塊返回錯誤;
[0027] (2. 1. 3)如果所述的虛擬化服務器的個數等于1,則返回該正在運行的虛擬化服 務器,然后繼續步驟(3);
[0028] (2. 1. 4)如果所述的虛擬化服務器的個數大于1,則返回正在運行的虛擬化服務 器繼續步驟(2. 2)。
[0029] 再進一步地,所述的步驟(2. 2)具體包括以下步驟:
[0030](2. 2. 1)所述的計算模塊判斷所述的正在運行的虛擬化服務器中是否存在低負載 的虛擬化服務器;
[0031] (2. 2. 2)如果所述的正在運行的虛擬化服務器中存在低負載的虛擬化服務器,則 返回該低負載的虛擬化服務器,然后繼續步驟(2.3);
[0032] (2. 2. 3)如果所述的正在運行的虛擬化服務器中不存在低負載的虛擬化服務器, 則所述的計算模塊判斷所述的正在運行的虛擬化服務器中是否存在中等負載的虛擬化服 務器;
[0033] (2. 2. 4)如果所述的正在運行的虛擬化服務器中存在中等負載的虛擬化服務器, 則返回該中等負載的虛擬化服務器,然后繼續步驟(2.3);
[0034] (2. 2. 5)如果所述的正在運行的虛擬化服務器中不存在中等負載的虛擬化服務 器,則繼續步驟(2.3)。
[0035] 再進一步地,所述的步驟(2. 2. 1)具體包括以下步驟:
[0036] (2. 2. 1. 1)所述的計算模塊判斷所述的正在運行的虛擬化服務器中是否存在符合 以下要求的虛擬化服務器:
[0037] VMS〈 = VML且 RES avl〈RESLl (i=1,…m) (1)
[0038] 其中,m為需要計算的資源種類數,i為第i種資源,VMsS虛擬化服務器中正在 運行的虛擬機數和申請運行的虛擬機數之和,VMJ%虛擬化服務器運行虛擬機數的低閾值, RES avl為虛擬化服務器第i種資源的平均使用率,RES u為虛擬化服務器第i種資源的平均 使用率低閾值;
[0039] (2. 2. 1. 2)如果所述的正在運行的虛擬化服務器中存在一個符合公式(1)的虛擬 化服務器,則繼續步驟(3);
[0040] (2. 2. 1. 3)如果所述的正在運行的虛擬化服務器中存在至少兩個符合公式(1)的 虛擬化服務器,則返回的所述的正在運行的虛擬化服務器中存在低負載的虛擬化服務器結 果;
[0041] (2. 2. 1. 4)如果所述的正在運行的虛擬化服務器中不存在符合公式(1)的虛擬化 服務器,則返回所述的正在運行的虛擬化服務器中不存在低負載的虛擬化服務器的結果。
[0042] 再進一步地,所述的計算模塊判斷所述的正在運行的虛擬化服務器中是否存在中 等負載的虛擬化服務器,具體包括以下步驟:
[0043] (2. 2. 3. 1)所述的計算模塊判斷所述的正在運行的虛擬化服務器中是否存在符合 以下要求的虛擬化服務器:
[0044] RESavl〈RESHl(i = 1,...m) (2)
[0045] 其中,m為需要計算的資源種類數,i為第i種資源,RESavl為虛擬化服務器第i種 資源的平均使用率,RES Hl為虛擬化服務器第i種資源平均使用率的高閾值;
[0046] (2. 2. 3. 1)如果所述的正在運行的虛擬化服務器中存在一個符合公式(2)的虛擬 化服務器,則繼續步驟(3);
[0047] (2. 2. 3. 1)如果所述的正在運行的虛擬化服務器中存在至少兩個符合公式(2)的 虛擬化服務器,則返回所述的正在運行的虛擬化服務器中存在中等負載的虛擬化服務器的 結果;
[0048] (2. 2. 3. 1)如果所述的正在運行的虛擬化服務器中不存在符合公式(2)的虛擬 化服務器,則返回所述的正在運行的虛擬化服務器中不存在中等負載的虛擬化服務器的結 果。
[0049] 再進一步地,所述的步驟(2. 3)具體為:
[0050]
[0051] 其中,LOAD為虛擬化服務器的綜合理論負載,i為第i中資源,j為第j個正在運 行的虛擬機,民為第i種資源使用率占總負載的比重,且〇〈 = R' = l,Rl+R2+*"+Rm= 1, a1,a ;= 〇???]_,0 ;= 〇"*l,m為需要計算的資源種類數,n為虛擬化服務器上正在 運行的虛擬機數和申請運行的虛擬機的和,2: