伺服器集群系統及其負載均衡實現方法
2023-10-05 20:41:04 1
伺服器集群系統及其負載均衡實現方法
【專利摘要】本發明提供一種伺服器集群系統及其負載均衡實現的方法,其中的系統包括:主節點、備用節點和普通節點;主節點包括信息收集模塊、負載計算模塊和連接分發決策模塊;備用節點,用於向主節點上報所述備用節點的信息,並與主節點的信息同步,以及對普通節點進行篩選,以便其成為主節點後,選擇出的普通節點作為新的備用節點;普通節點,用於向主節點上報所述普通節點的信息,以及當其成為備用節點時,進行備用節點切換。利用本發明,通過使用網狀組網的具有主備用節點的伺服器集群系統,利用主備用節點的結構實現連接分發,達到分攤連接的功能,能夠解決連接分發延時、連接不穩定和不可靠的問題。
【專利說明】伺服器集群系統及其負載均衡實現方法
【技術領域】
[0001] 本發明涉及伺服器集群【技術領域】,更為具體地,涉及一種伺服器集群系統及其負 載均衡實現方法。
【背景技術】
[0002] 隨著汽車保有量的上升、道路擁堵狀況的加劇以及交通安全事故的頻繁發生,越 來越多的組織機構及個人認識到深入理解駕駛員的駕駛行為將有助於制定更為合理的交 通法則和設計更加有效的智能駕駛導航系統,從而達到減少交通事故提高交通效率的目 的。而上述的分析需要建立在大量的行車數據的基礎上,需要大量智能終端(包括車載終 端、手機終端等設備)不斷實時地採集行車數據上傳至車載伺服器並進行分析。因此,隨著 智能終端及其業務量的不斷提升,單一的伺服器已經無法滿足要求,伺服器集群成為一種 需要解決問題的方案。
[0003] 就智能終端而言,其承擔著數據收集的重任,需要不斷高效地採集車輛的行車數 據,並與伺服器保持連接,將搜集到的數據實時地傳送到服務端,此過程簡稱為"數據擺 渡"。在實時"數據擺渡"領域中,一般採用長連接方式,即保持智能終端長時間在線,從而 保證數據的實時性。同時,由於其數據量取決於車輛的使用量,因此必然存在與伺服器端的 大量數據交互。因此,在此架構下,如何設計伺服器,一方面滿足大量智能終端的長連接需 求,另一方面保證大量數據的收發及存儲正常,成為了該領域的一個需要解決的問題。
[0004] 針對上述問題,一種解決方案是採用反向代理以實現負載均衡。
[0005] 在採用反向代理實現的負載均衡方案中,利用的是反向代理伺服器實現連結分 發。其具體方法可以描述為:反向代理伺服器首先接受來自網絡上的連接請求,並與其建立 連接,然後將隨後收到的來自客戶終端的訪問請求轉發給內部伺服器,並將從內部伺服器 上返回的結果再次轉發給相應的發起連接請求的客戶終端。在此過程中,反向代理伺服器 對外表現為一個伺服器,對內則是連接請求的總入口和總出口,負責將連接分發給內部的 各個伺服器。
[0006] 這種解決方案的缺陷在於:由於反向代理伺服器處於0SI七層模型中的應用層, 因此必須為每一種應用服務專門開發一個反向代理伺服器,這樣就限制了反向代理負載均 衡技術的應用範圍。目前,反向代理技術一般都用於對web伺服器的負載均衡,另外,在反 向代理方式實現的負載均衡中,針對每一次代理行為,代理伺服器必須打開兩個連接,一個 對外,一個對內,因此在並發連接請求數量非常大的時候,代理伺服器的負載也就非常大 了,在該類網絡中,通常情況下都是代理伺服器本身成為了服務性能的瓶頸。
[0007] 另一種最常用的解決方案是基於網絡地址轉換(NAT)技術實現的負載均衡。網絡 地址轉換技術誕生之初,為了解決IPv4公網地址數量減少的問題,將內部多個伺服器對外 映射為一個單獨的伺服器,以利用一個公網IP使內部多個伺服器對外提供服務。
[0008] 在這種基於網絡地址轉換(NAT)技術實現的解決方案中,從網絡上發起的連接請 求,經過地址轉換伺服器進行地址轉換,再分發到內部的各個伺服器上。採用這種方式實現 的負載均衡,雖然能夠解決反向代理技術位於應用層,但尚需要針對每種應用服務專門開 發反向代理伺服器的問題;並且網絡地址轉換方式實現的負載均衡仍需要針對每次請求打 開對內及對外的兩個連接才能實現,因此在數據裡非常大的時候地址轉換伺服器本身會成 為性能瓶頸。
[0009] 與此同時,網絡地址轉換方式實現的負載均衡中,實現的是在每個請求到達時動 態選擇某個內部伺服器處理請求,並需要在處理結果返回時正確找到請求來源,因此需要 對每個請求保留其轉換映射表。同樣的道理,當請求量變大時,對請求映射表的維護也需要 消耗大量資源,與反向代理技術相比,更容易造成地址轉換伺服器的性能問題;最後,在目 前實際使用的地址轉換服務式負載均衡中,大多將地址轉換功能集成在硬體交換機中,其 實現的只是簡單的選擇策略,不能支持更優化的負載均衡策略和更複雜的應用協議,並且 在擴展時有一定困難。
【發明內容】
[0010] 鑑於上述問題,本發明的目的是提供一種伺服器集群系統及其負載均衡實現方 法,通過使用網狀組網的具有主備用節點的伺服器集群系統,利用主備用節點的結構實現 連接分發,達到分攤連接的功能,以解決連接分發延時、連接不穩定和不可靠的問題。
[0011] 一方面,本發明提供一種伺服器集群系統,包括主節點、備用節點和普通節點;其 中,
[0012] 主節點包括信息收集模塊、負載計算模塊和連接分發決策模塊;
[0013] 信息收集模塊,用於存儲與主節點相連的備用節點和各個普通節點上報的負載信 息;
[0014] 負載計算模塊,用於根據上報的負載信息,獲得與負載信息相對應的節點的負載 值;
[0015] 連接分發決策模塊,用於通過HTTP重定向進行連接分發,其中,根據負載計算模 塊獲得的節點的負載值,選擇出最優處理能力的節點,作為連接分發的節點;
[0016] 備用節點,用於向主節點上報備用節點的負載信息,並與主節點的信息同步,以及 對普通節點進行篩選,選擇出的普通節點作為新的備用節點;
[0017] 普通節點,用於向主節點上報所述普通節點的信息,以及當其成為備用節點時,將 其切換為行備用節點。
[0018] 此外,優選的方案是,主節點還包括管理會話模塊;用於管理客戶終端與集群系 統之間的會話歷史記錄,並負責刪除客戶終端與集群系統之間長時間不活躍的歷史會話記 錄。此外,優選的方案是,在信息收集模塊中創建一個nodelist,nodelist用於存儲與主節 點相連的各個節點的負載信息;其中,
[0019] nodelist包括更新機制,更新機制用於刪除離線的節點。
[0020] 此外,優選的方案是,負載信息包括:與主節點相連的每個節點的CPU利用率、內 存利用率、網絡帶寬佔用率以及socket連接佔用率;
[0021] 在負載計算模塊中,對每個節點通過特定加權的負載計算算法,分別獲取其對於 CPU密集型、內存密集型、網絡帶寬密集型及socket密集型請求的負載能力,並將獲取的結 果更新到nodelist。
[0022] 此外,優選的方案是,備用節點包括備用節點信息上報模塊、信息同步模塊和普通 節點篩選模塊;
[0023] 備用節點信息上報模塊,用於向主節點周期性匯報負載信息;
[0024] 信息同步模塊,用於周期性地同步信息收集模塊中的負載信息,並進行存儲;
[0025] 普通節點篩選模塊,用於當備用節點成為主節點時,選擇普通節點中負載最小的 節點成為其備選。
[0026] 此外,優選的方案是,普通節點包括普通節點信息上報模塊和備用節點切換模 塊;
[0027] 普通節點信息上報模塊,用於向主節點周期性匯報負載信息;
[0028] 備用節點切換模塊,用於當備用節點成為新的主節點後,將對其所選擇出的新的 備用節點發出通知,普通節點據此切換為備用節點,並承擔備用節點的職責。
[0029] 另一方面,本發明還提供一種基於伺服器集群系統的負載均衡實現方法,伺服器 集群系統包括主節點、備用節點和普通節點,其中,:
[0030] 主節點周期性地接收與其相連的備用節點、各個普通節點上報的負載信息,並根 據上報的負載信息,獲得與負載信息相對應的各個節點的負載值;
[0031] 當有客戶終端連接請求時,主節點通過HTTP重定向進行連接分發,其中,主節點 根據獲得的各個節點的負載值,選出最優處理能力的節點,作為連接的分發節點;
[0032] 當主節點出現故障時,備用節點進行主備切換,成為新的主節點,執行主節點的職 責,同時啟用新的備用節點;
[0033] 新的備用節點將負載信息上報到新的主節點中,並與新的主節點的信息同步,同 時對普通節點進行篩選,選出新的備用節點的備選。
[0034] 此外,優選的方案是,在主節點中設置有會話管理機制,會話管理機制包括客戶終 端與集群系統之間的會話歷史記錄,並負責刪除所述客戶終端與主節點之間長時間不活躍 的歷史會話記錄,使選擇的連接分發的節點為最佳選擇。
[0035] 此外,優選的方案是,在主節點中創建一個nodelist,各個節點的負載信息存儲在 node list中,在客戶客戶終端請求連接之前,
[0036] 判斷nodelist中是否存在離線的節點,若存在離線的節點,則將此節點從 nodelist中刪除;若存在離線的節點為備用節點,貝U重新在普通節點中選擇新的備用節 點,並與主節點進行信息同步;
[0037] 若在nodelist中不存在離線的節點,根據客戶終端的連接請求進行連接分發。
[0038] 此外,優選的方案是,在新的備用節點對普通節點進行篩選的過程中,新的備用節 點從普通節點中選擇負載最小的節點作為其備選。
[0039] 此外,優選的方案是,負載信息包括:與主節點相連的每個節點的CPU利用率、內 存利用率、網絡帶寬佔用率以及socket連接佔用率;
[0040] 通過特定加權的負載計算算法,每個節點分別計算其對於CPU密集型、內存密集 型、網絡帶寬密集型及socket密集型請求的負載能力,公式如下:
[0041] rx = f (cu, mu, nu, su)
[0042] 其中,n表示節點的剩餘資源;
[0043] cu、mu、nu、su分別表示接收到的節點上傳的CPU利用率、內存利用率、網絡帶寬佔 用率以及socket連接佔用率。
[0044] 此外,優選的方案是,根據接收到各個節點上傳的負載信息,計算出剩餘資源百分 t匕,其公式如下式所示:
[0045]
【權利要求】
1. 一種伺服器集群系統,包括主節點、備用節點和普通節點;其中, 所述主節點包括信息收集模塊、負載計算模塊和連接分發決策模塊; 所述信息收集模塊,用於存儲與所述主節點相連的備用節點和各個普通節點上報的負 載信息; 所述負載計算模塊,用於根據所述上報的負載信息,獲得與所述負載信息相對應的節 點的負載值; 所述連接分發決策模塊,用於通過HTTP重定向進行連接分發,其中,根據所述負載計 算模塊獲得的節點的負載值,選擇出最優處理能力的節點,作為連接分發的節點; 所述備用節點,用於向所述主節點上報備用節點的負載信息,並與所述主節點的信息 同步,以及對所述普通節點進行篩選,選擇出的普通節點作為新的備用節點; 所述普通節點,用於向所述主節點上報普通節點的負載信息,以及當其成為備用節點 時,將其切換為備用節點。
2. 如權利要求1所述的伺服器集群系統,其中, 所述主節點還包括管理會話模塊,用於管理客戶終端與所述集群系統之間的會話歷史 記錄,並負責刪除所述客戶終端與所述集群系統之間長時間不活躍的歷史會話記錄。
3. 如權利要求1所述的伺服器集群系統,其中, 在所述信息收集模塊中創建一個nodelist,所述nodelist用於存儲與所述主節點相 連的各個節點上報的負載信息;其中, 所述nodelist包括更新機制,所述更新機制用於刪除離線的節點。
4. 如權利要求3所述的伺服器集群系統,其中, 負載信息包括:與所述主節點相連的每個節點的CPU利用率、內存利用率、網絡帶寬佔 用率以及socket連接佔用率; 在所述負載計算模塊中,對每個節點通過特定加權的負載計算算法,分別獲取其對於 CPU密集型、內存密集型、網絡帶寬密集型及socket密集型請求的負載能力,並將獲取的結 果更新到所述nodelist。
5. 如權利要求1所述的伺服器集群系統,其中, 所述備用節點包括備用節點信息上報模塊、信息同步模塊和普通節點篩選模塊; 所述備用節點信息上報模塊,用於向所述主節點周期性匯報負載信息; 所述信息同步模塊,用於周期性地同步所述信息收集模塊中的負載信息,並進行存 儲; 所述普通節點篩選模塊,用於當所述備用節點成為主節點時,選擇普通節點中負載最 小的節點成為其備選。
6. 如權利要求1所述的伺服器集群系統,其中, 所述普通節點包括普通節點信息上報模塊和備用節點切換模塊; 所述普通節點信息上報模塊,用於向所述主節點周期性匯報負載信息; 所述備用節點切換模塊,用於當所述備用節點成為新的主節點後,將對其所選擇出的 新的備用節點發出通知,普通節點據此切換為備用節點,並承擔備用節點的職責。
7. -種基於伺服器集群系統的負載均衡實現方法,所述伺服器集群系統包括主節點、 備用節點和普通節點,其中, 所述主節點周期性地接收與其相連的備用節點、各個普通節點上報的負載信息,並根 據上報的所述負載信息,獲得與所述負載信息相對應的各個節點的負載值; 當有客戶終端連接請求時,所述主節點通過HTTP重定向進行連接分發,其中,所述主 節點根據獲得的各個節點的負載值,選出最優處理能力的節點作為連接分發的節點; 當所述主節點出現故障時,所述備用節點進行主備切換,成為新的主節點,執行主節點 的職責,同時啟用新的備用節點; 所述新的備用節點將負載信息上報到所述新的主節點中,並與新的主節點的信息同 步,同時對所述普通節點進行篩選,選出所述新的備用節點的備選。
8. 如權利要求7所述的基於伺服器集群系統的負載均衡實現方法,其中,在所述主節 點中設置有會話管理機制, 所述會話管理機制包括所述客戶終端與所述集群系統之間的會話歷史記錄,並負責刪 除所述客戶終端與所述主節點之間長時間不活躍的歷史會話記錄,使選擇的連接分發的節 點為最佳選擇。
9. 如權利要求7所述的基於伺服器集群系統的負載均衡實現方法,其中,在所述主節 點中創建一個nodelist,各個節點的負載信息存儲在所述nodelist中,在所述客戶終端請 求連接之前, 判斷所述nodelist中是否存在離線的節點,若存在離線的節點,則將此節點從所述 nodelist中刪除;若存在離線的節點為備用節點,則重新在所述普通節點中選擇新的備用 節點,並與所述主節點進行信息同步; 若在所述nodelist中不存在離線的節點,根據所述客戶終端的連接請求進行連接分 發。
10. 如權利要求7所述的基於伺服器集群系統的負載均衡實現方法,其中,在所述新的 備用節點對所述普通節點進行篩選的過程中, 所述新的備用節點從所述普通節點中選擇負載最小的節點作為其備選。
11. 如權利要求7所述的基於伺服器集群系統的負載均衡實現方法,其中, 所述負載信息包括:與所述主節點相連的每個節點的CPU利用率、內存利用率、網絡帶 寬佔用率以及socket連接佔用率; 通過特定加權的負載計算算法,每個節點分別計算其對於CPU密集型、內存密集型、網 絡帶寬密集型及socket密集型請求的負載能力,公式如下: rx = f (cu, mu, nu, su) 其中,表示節點的剩餘資源; cu、mu、nu、su分別表示接收到的節點上傳的CPU利用率、內存利用率、網絡帶寬佔用率 以及socket連接佔用率。
12. 如權利要求11所述的基於伺服器集群系統的負載均衡實現方法,其中, 根據接收到各個節點上傳的負載信息,計算出剩餘資源百分比,其公式如下式所示: [Π (1 -/"(/c) - tcimsl)]·(1 - 2cit(k) + cu(k -1)) if cu{k)> cu{k-\) r,{k)={ t=s-u-m [Π (1 - Λ, (/f) - tninsl)] · (1 - c" (k)) else 其中,ri(k)表示k時刻的剩餘資源百分比; Cu(k)表示k時刻CPU使用率; cu(k-l)表示(k-1)時刻CPU的使用率; 在(l-tu(k)-t_st)中,當t = s時,tu(k)表示k時刻的socket連接使用率,t_st表示 socket資源的預留量,(l-tu(k)-t_st)表示節點t時刻剩餘的可用的socket資源情況; 當t = m時,tu(k)表示k時刻的內存使用率,t_st表示內存資源的預留量, (l-tu(k)-t_st)表示節點t時刻剩餘的可用的內存資源情況; 當t = n時,tu(k)表示k時刻的網絡帶寬佔用率,t_st表示網絡帶寬的預留量, (l-tu(k)-t_st)表示節點t時刻剩餘的可用的網絡帶寬資源情況。
【文檔編號】H04L29/08GK104283948SQ201410512754
【公開日】2015年1月14日 申請日期:2014年9月26日 優先權日:2014年9月26日
【發明者】張珠華, 張霞, 徐麗麗, 張騫 申請人:東軟集團股份有限公司