張 淵 ,郭濤峰 ,張攀翔 ,高建軍 ,臧佳艷
(1.中國移動通信集團廣東有限公司 廣州 510623;2.億陽信通股份有限公司 北京 100093)
隨著移動通信和高性能網絡技術的飛速發展,3G網絡、智能網以及LTE的不斷推廣和普及,在用戶數量增加的同時開通的業務也呈多樣化發展,數據業務量逐漸呈現上升趨勢。而隨著業務量的提高、訪問量和數據流量的快速增長,其處理能力和計算強度也相應增大,數據采集的負荷越來越高,使得單一采集設備根本無法承擔。網管相關部分為了應對采集機高負荷的狀況,頻頻增加價格昂貴的小型機,用來解決采集效率降低、采集機高負荷下頻頻宕機的問題,以期提升采集層的穩定性,保障支撐業務能夠順利運行。然而,這種單純增加采集機硬件的方式,卻很難成為一種高性價比、適應長遠發展的解決方案。
傳統的數據采集模式,各專業間的采集都是單獨建設,呈離散分布,由于各專業網業務需求不一樣,采集的數據量也存在差異,這勢必造成專業間資源不能充分利用,不能互補。為了解決這種問題,統一采集平臺在移動規劃OSS 2.0中首次被提出,從架構上突破了傳統網管數據采集的建設模式,將各專業網中的NE/OMC/EMS作為一個大的設備源池,采集的數據統一由統一采集平臺提供,從而避免多應用系統重復采集、數據“孤島”等情況存在。
統一采集平臺如何實現各專業間數據采集硬件資源的充分利用、負荷均勻分配,是達到OSS 2.0規劃中采集層“統一”的關鍵,而負載均衡技術為解決這些問題提供了一個技術支撐點。負載均衡建立在現有網絡結構之上,提供了一種廉價、有效、透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
近年來隨著云技術的快速發展,基于云平臺的集群計算逐步成為一種高性價比的并行/分布式計算資源。負載均衡是集群系統中的重要技術,而動態負載均衡技術的應用更符合實際環境的需要,通過動態平衡各個節點間的負載提高集群系統的性能。
目前,負載均衡技術主要應用在以下幾個方面:DNS負載均衡、代理服務器負載均衡、地址轉換網關負載均衡、協議內部支持負載均衡、NAT負載均衡、反向代理負載均衡、混合型負載均衡等。其中,混合型負載均衡常用于大型網絡,由于多個服務器群內的硬件設備、各自的規模、提供的服務等存在差異,考慮對每個服務器群采用最合適的負載均衡方式,然后在多個服務器群間再一次負載均衡或群集起來以一個整體向外界提供服務(即把多個服務器群當作一個新的服務器群),從而達到最佳的性能。統一采集平臺的軟硬件環境、提供的服務等與混合型負載均衡基本一致,因此本研究基于該負載均衡應用開展。
傳統的網管采集系統依賴于網管系統,采取“煙囪”式的模式獨立建設。業務平臺上的應用眾多,而每個應用的建設在不同階段由不同的廠商來實施,采用不同的架構,基本上都是以“煙囪”式進行運維管理,每個應用獨占物理服務器、存儲和網絡等資源。每個應用為了保證服務質量,在擴容時一般都按照峰值時的需求,造成正常情況下一大部分資源被浪費,沒有被充分利用;而部分發展緩慢的業務資源難以及時回收,也造成資源浪費;專業網內及網間的采集機資源也無法得到合理利用。
這種模式下,即使硬件資源投資逐年提升,仍無法得到良好的應用效果,系統的穩定性得不到保證。采集機運行負荷不均、資源孤立等因素,導致個別采集機經常性宕機的情況時有發生。
而突破網間及網內資源的獨立限制,將離散的采集機有效地控制起來,并且合理利用和分配硬件資源的技術,成為采集層急迫解決的難題。
為解決以上諸多現狀問題,統一采集平臺引入了采集節點任務動態負載均衡技術。本文從動態負載均衡原理、任務調度算法、資源池搭建和部署、不同場景下的負載均衡處理和設計機制、核心控制切換機制以及權重因子和負荷監控等方面著手研究,使負載均衡技術能夠真正運用到統一采集平臺中。
負載均衡建立在現有網絡結構之上,提供了一種廉價有效的方法擴展服務器帶寬和增加吞吐量,加強網絡數據處理能力,提高網絡的靈活性和可用性。大量的并發訪問或數據流量分擔到多臺節點設備上分別處理,減少用戶等待響應的時間。網絡負載均衡則將工作負載在這些主機間進行分配。對于其他服務,只有一臺主機處理工作負載,針對這些服務,網絡負載均衡允許網絡通信量流到一個主機上,并在該主機發生故障時將通信量移至其他主機。
負載均衡技術能夠解決網絡擁塞問題,就近提供服務,實現地理位置無關性,能夠為用戶提供更好的訪問質量,提高服務器的響應速度,提高服務器及其他資源的利用效率,并且能夠避免網絡關鍵部位出現單點失效。
一個負載均衡算法通常包含以下3個組成部分。
·信息策略:制定任務放置策略的制定者使用的負載和任務量以及信息分配方式。
·傳送策略:基于任務和計算機負載,判斷是否要把一個任務傳送到其他計算機上處理。
·放置策略:對于適合傳送到其他計算機處理的任務,選擇任務將被傳送到目的計算機。
負載均衡的3個組成部分之間以不同的方式相互作用。放置策略利用信息策略提供的負載信息,僅當任務被傳送策略判斷為適于傳送之后才行動。
目前,關于負載均衡任務調度的算法有:輪詢(round robin)、加權輪詢 (weighted round robin)、最少連接(least connections)、加權最少連接(weighted least connections)、隨機 (random)、加權隨機 (weighted random)、源地址散列(source hashing)、源地址端口散列(source&port hashing)、目的地址散列(destination hashing),但后兩種算法的實現相對比較復雜,應用并不廣泛。
(1)輪詢算法
新的連接被依次輪詢分發到各個實服務器上,如第1個連接分發到第1臺服務器,第2個連接分配到第2臺服務器,依次輪詢。輪詢算法適合于服務器組中所有服務器都有相同的軟硬件配置并且平均服務請求相對均衡的情況。
(2)加權輪詢算法
根據服務器的不同處理能力,為每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。根據實際服務器的配置情況和處理能力,給每臺實際服務器制定一個整數類型的權值,此整數值用來標識服務器處理用戶請求的能力。在加權循環輪轉分配用戶請求時,優先請求分配權值大的服務器,權值大的服務器將被賦予更多的請求,一段時間后,各服務器處理請求數趨于各自權值的比例。加權輪詢算法能確保高性能的服務器得到更多的使用率,避免低性能的服務器負載過重。
(3)最少連接算法
最少連接算法對內部需負載的每一臺服務器都有一個數據記錄,記錄當前服務器正在處理的連接數量,當有新的服務連接請求時,把當前請求分配給連接數最少的服務器,使均衡更加符合實際情況,負載更加均衡。最少連接算法適合長時處理的請求服務,如FTP。
(4)加權最少連接算法
將加權與最少連接算法配合,根據連接數與加權比例計算當前新連接應該發往哪個服務器。
(5)隨機算法
將新連接隨機分發給具體的實服務器。
(6)加權隨機算法
使加權與隨機算法配合,根據隨機數與加權比例計算當前新連接應該發往哪個服務器。
(7)源地址散列算法
根據新連接的源IP地址進行散列的結果決定將該新連接發往哪個實服務器。一般來說,來自相同客戶端的新連接會被散列到相同的實服務器。
統一采集平臺的負載均衡部署在管理服務器上,其任務調度采用一種類似加權輪詢采集機的方式,這種算法對負荷影響因素的分析相對全面,得出的均衡結論更加準確,應用也相對更廣泛。在統一采集平臺中,負載權重因子包括任務權重因子、采集機硬件負荷因子。其中,采集機負荷因子涵蓋CPU占用率、硬盤總量、內存占用率、線程總數、采集機采集能力、最大負荷值、CPU上下文切換率;任務權重因子包括采集機支持最大任務數、運行隊列中的任務數等。通過對兩大類權重因子的復雜運算和分析,確保高性能的服務器得到更多的使用率、服務器運行的各種任務得到動態均衡分配和監控,從而避免低性能的服務器負載過重,同時提升任務執行的及時性和采集平臺自身的穩定性。在加權輪詢算法的實現上,統一采集平臺要經過4個策略處理步驟,分別為傳送策略、選擇策略、放置策略、信息策略,具體介紹如下。
·傳送策略用來決定一個采集節點是否適合參與一次任務的遷移,在本次遷移中,采集節點可以作為發送節點,也可以作為接收節點。傳送策略使用閾值策略,當一個采集機節點產生一個新的任務時,傳送策略判斷該節點的負載超過上限閾值TH,它成為發送節點遷移任務;當一個節點的負荷降到下限閾值TL,傳送策略決定該節點為可用采集機節點,具備分擔采集任務負載。其中,TH與TL值可以在統一采集平臺的UI界面中設置。
·選擇策略在傳送策略之后啟動,負責將任務向采集機任務開銷較小的服務器上轉移。統一采集平臺對策略的選擇考慮了兩種因素:其一,轉移的額外開銷經計算比較后代價最小;其二,如果被選中的采集任務可以運行足夠長的時間,那么可以認為采集節點為可接受選擇策略。
·放置策略確定進程遷移目的節點,將任務遷移到系統中負載最輕的節點。統一采集平臺的放置策略采取“輪詢”方式,一個采集節點向另外的節點詢問對方是否適合作為傳送目標節點。詢問節點的選擇基于上一次的輪詢信息,通過發送詢問的廣播分組尋找任意一個負載均衡的可用節點。
·信息策略的選取是采集服務器負載均衡算法的核心,它的選擇直接影響到負載均衡的性能,一個好的策略可以使得系統的性能得到很大提高。集群系統的信息策略決定系統節點的信息何時被收集、從何處收集這些信息、具體要收集哪些信息以及收集到的信息的管理方式和處理效率。統一采集平臺的負載均衡算法采取周期性收集策略和時間驅動策略;收集到的信息的管理可以采用集中式,也可以采用分散式。
負載均衡的實現過程如圖1所示,具體介紹如下。
·管理控制分發任務線程接收到待發任務;
·判斷是否為定向任務;
·如果是定向任務,找到定向采集機,直接下發,如果不是定向任務,找到所有適合該任務的采集機;
·計算所有采集機的權重和;
·取當前所有未完成的任務數+子任務數 (以前未完成的任務數+本次待發的任務數);
·循環所有采集機,找出最優采集機,下發任務;
·如果沒有找到采集機,進入重新下發任務隊列;
·在所有未完成的任務緩存中緩存該任務;
·在該采集機未完成的任務緩存中緩存該任務;
·任務完成后,回收緩存的任務。
循環采集機的流程介紹如下。
·取一個采集機。
·判斷CPU和內存中使用率最大的數是否超過設置上限。心跳中的CPU和內存的使用率與采集機的DAL_MD_INFO表采集機最大負荷值字段值比較,如果大于DAL_MD_INFO表中采集機的最大負荷值,則不給該采集機分配任務。
·計算采集機的應分任務,應分任務=采集機權重/所有采集機權重和×(所有未完成的任務數+子任務數);采集機權重值來自DAL_MD_INFO表中的MD_POWER字段;所有未完成的任務數來自于Task Status Manager類中原緩存變量的長度。
·計算與該采集實際未完成的任務數的差值,稱任務空閑值,任務空閑值=應分任務-實際未完成任務。
·比較各采集機的任務空閑值,保存任務空閑值最大的采集機名稱。
·循環完畢后,返回采集機名稱。
經過研究和實踐得出,云平臺資源池建設過程中,當遵循以下幾個原則時,效率最高、方案最可行。

圖1 負載均衡流程
·不同CPU指令集的服務器資源池之間無法共享資源,需獨立建池;
·結合機房分布,分散設置各資源池;存儲設備需與關聯服務器設置在同一機房;
·數據實時交互的兩大系統需設置相同或相近的機房;
·充分考慮對現有設備的利舊;
·能夠通過內網不同安全域實現相同資源池的共享;
·建立與云計算相適應的IT管理工具和IT運維管理體系。
為了兼顧采集效率和經濟投入效率,統一采集平臺需要支持兩種模式下的云資源池搭建方式:完全基于x86構建資源池;考慮硬件利舊,支持x86與小型機(原有)混搭構建資源池。
對應于分布式采集方案,集中采集是將采集機放在網管服務器側(如圖2(a)所示),在網絡向萬兆比特發展的大趨勢下,原則上盡量采用集中采集方式。

圖2 集中式采集和分散式采集示意
對于采集數據量特別大的情況,如信令監測,可考慮采取分散采集方式(如圖2(b)所示)。對于多省集中且采用網元直聯采集方式的采集平臺,首先在屬地省進行采集收斂和數據壓縮,然后再接入采集平臺。
不管是分布式采集還是集中式采集,采集管控均采用集中部署方式,集中進行采集任務調度和采集監控。
(1)計算資源
針對集中采集方案,考慮到云計算的發展趨勢,宜考慮統一采用x86主機資源池進行建設。
·部署在云資源池的內聯或外聯DMZ;
·除考慮利舊小型機外,新增采集機均采用x86主機;
·可按省份、專業、網元劃分采集機,根據需要使用虛擬化技術,提高采集節點的利用率,實現采集機N+1高可用方案。
(2)存儲資源
·采集共享數據為結構化數據,采用數據庫存儲;
·采集原始數據文件、日志文件,采用文件存儲;
·數據量巨大時,考慮采用分布式數據庫和分布式文件系統。
硬件部署如圖3所示。
統一采集平臺具備系統穩定性、高可用性、可擴展性,在硬件部署上支持采集機集群、管理服務器集群方式。基于云資源池實現采集機集群、動態負載均衡。管理服務器資源池層,支持多臺管理服務器互備份的功能。
3.4.1 常態下的負載均衡實現機制
采集機負載均衡要求將無定向采集機的采集任務,根據采集機負載情況動態分配給負載較低的采集機,主要通過以下方式保障:
·所有采集廠商適配器包在管理監控平臺注冊并同步到所有采集機上,新增采集機自動獲取全部廠商包,以保證非定向采集任務可以被分配到任何一臺采集機上;
·采集機定時反饋自身狀態信息,包括正在執行的線程數、內存占用、CPU負荷信息,供管理平臺計算負載、下發任務;
·管理監控平臺的狀態監控管理模塊,通過接收采集機定時反饋的自身信息判斷是否有采集機宕機,如果宕機,則將該采集機所有非定向任務負載分擔給正常的采集機,并發出相關告警。
任務分發模塊根據采集機的負載情況,將可以負載均衡的任務分發到負載較低的采集機上進行采集,將定向任務發到指定或初次采集的采集機上進行采集。
其內部處理結構如圖4所示。
任務類型判斷模塊:合并后的任務提交到分發通道,任務類型判斷模塊從通道中讀取任務,并根據任務類型、采集機狀態和負載均衡算法選擇采集機,將采集機信息存入任務對象。
消息發送模塊:將任務消息發送到任務采集機隊列中,采集機獲取后進行相關采集工作。如果是特殊任務,直接從任務中取出采集機信息下發到采集機。
負載均衡算法可以參考的維度包括:CPU占用率、內存占用率、采集機采集能力、采集機未完成的任務數、任務負載權重等。
3.4.2 采集機出現故障時的負載均衡實現機制

圖3 硬件部署

圖4 任務分發內部處理結構
采集節點實時上報心跳信息給管理服務器,心跳信息中包含系統資源占用情況,包括CPU、內存占用情況,管理服務器通過心跳信息及時掌握各采集節點的狀態,管理服務器在3個心跳周期沒有收到心跳就置該采集節點為不可用狀態,不會再給該采集節點下發任務,而原有分配到該采集機的任務會自動分配到其他采集機上,不會影響數據的正常采集,當采集機恢復后將繼續向其分配采集任務。
同時,在采集機節點發生故障時,系統具備可配置節點故障發送機制,能夠第一時間以消息(告警)的形式通知運維人員,對采集機故障進行及時干預,避免由于采集任務分擔到其他采集機后造成負荷過高而產生更大的故障損失。
出現故障時的處理過程如圖5所示。
3.4.3 新增采集機時的負載均衡實現機制
統一采集平臺提供了一種采集機自動加載機制,通過可視化界面對新增的采集機進行配置,配置完成后即可直接用于采集數據,過程中不需要重新啟動系統和程序。管理監控平臺的狀態監控管理模塊經過輪詢方式主動發現新增采集機,建立心跳連接,探測該采集機的自身健康狀況,經過負載權衡因子計算后,判斷為可用采集機。任務分發模塊,將可以采集任務自動分發到新的采集節點上,新增采集機根據任務進行采集。
3.4.4 網絡限制,采集機分組機制
由于網絡路由限制,允許對采集節點進行分組,在采集節點組內部進行負載均衡,支持將某個采集源的采集定向到某一個采集節點,如對數據網中業務系統的采集,采集機必須部署在專業域內部,部署在網管中心的采集機不能訪問,這樣就可以把部署在專業域內部的幾臺采集機分為一個組,采集任務可以在這幾臺機器之間進行負載均衡。

圖5 采集機出現故障時的負載均衡示意
實踐證明,采集機對設備訪問時有網絡限制等場景下,用采集機分組方式解決動態負載均衡面臨的問題,效率最好,見表1。
統一采集平臺提供一種保障負載均衡穩定性機制,即核心控制能夠自動切換。目前,負載均衡控制器程序部署在統一采集平臺的“主—備”管理服務器中。
(1)儲備切換機制
備用服務器定期(可設置)從主用服務器同步數據,外部自身監控模塊實時監控主用服務器的進程狀態和心跳信息。當主用服務器出現異常后,核心管理控制器自動切換到備用管理服務器,同時自身監控模塊會發送告警給監控類系統,并以短信方式發送給維護人員。此時,可以查看當前時間段數據是否正常,必要時進行數據補采操作。
(2)主備核心控制器間的信息同步
核心控制服務器上部署內存數據庫 (HSQLDB)等程序,在備用系統上配置每10 min會把主用核心控制服務器上的HSQLDB、核心服務同步一次。HSQLDB中保存有設備的訪問信息和任務信息,核心服務保存有適配器。

表1 刀片機分組模式與不分組模式不同場景下對比
主備切換時,主用核心控制器上已經下發給采集機的任務會在采集機上正常運行,剛生成還沒有下發的任務會緩存在HSQLDB中,備用核心控制器啟動后會重新下發這些任務,然后按時生成后續的任務。整個過程理論上不會存在任務丟失的情況。
(3)主備核心控制異常監控
主用核心控制器每30 s會輸出心跳,外部自身監控模塊實時監控該心跳信息,當超過1.5 min沒有心跳時就發送告警信息到綜合監控系統,同時每5 min掃描1次進程狀態,當發現進程缺失時也會發送告警信息到綜合監控系統。
(1)負載均衡權值因子設置
統一采集平臺的動態負載均衡權重因子能夠靈活配置。系統提供可視化權重配置界面,用戶可以根據采集機以及任務負荷的實際情況修改權重值,能夠修改的權值因子包括CPU占用率、硬盤總量、內存占用率、線程總數、采集機采集能力、最大負荷值、CPU上下文切換率、采集機支持最大任務數、運行隊列中的任務數。
(2)負載均衡運行狀況監控
采集任務監控:通過監控采集節點狀態,判斷任務分發路由,實現負載均衡。采集狀態監控包括負載均衡狀態監控、采集任務監控、采集機負荷監控。各監控功能除實現后臺監控外,還提供前臺查看界面。采集任務的啟停除通過調度程序后臺自動控制外,還可通過前臺界面監控任務執行過程,更新任務執行狀態,并可以手動干預任務的啟停。
負載均衡狀態監控:任務負載均衡查詢功能監控任務負載均衡狀態,包括查詢各個采集機的總任務個數、采集機任務數、采集機組任務數等。系統可定期更新狀態信息,支持按照監控列進行升序、降序排序,支持監控列的自由設定操作,用戶可通過選擇需要顯示的列,去除不關心的系統狀態參數,以保證只監控關心的、重點的運行狀態。
采集任務監控:能夠監控采集機當前任務正在執行的狀態,可選擇任務狀態、采集機、采集源、任務開始時間、任務結束時間作為查詢條件過濾采集任務,任務狀態包括新任務、正在執行、成功、失敗、全部,可通過圖形界面查看任務流程,并可以呈現每個任務執行到的具體步驟以及每個步驟的執行情況和詳細信息。
運行負荷監控:可監控到采集機運行時對硬件資源(CPU、內存、磁盤)的占用情況,超過閾值后發送告警。采集機定期發送狀態信息用于采集機負荷監控,負荷監控的內容包括采集機別名、采集主機IP地址、CPU利用率、CPU總量(G×N)、內存占用(MB)、虛擬機內存總量(MB)、磁盤利用率、磁盤總量(GB)、心跳閾值(s)、心跳時間、采集機主機名稱等。
目前,本文所提及的動態負載技術和研究成果,已在中國移動通信集團廣東有限公司(以下簡稱廣東移動)統一采集平臺項目中得到了驗證和實施。
從實施規模和應用效果看,采集機的數據采集能力得到了一定的提升。目前,統計數據得出:平臺日處理原始文件145 GB,每小時KPI任務量超過700個,每小時KPI表數據量超過1100條,每小時counter任務量超過5000個,每小時counter表數據量超過8000萬條,任務平均執行時間≤48 s。從數據及時性對比結果看,現網運行的愛立信設備數據采集到KPI的生成時間平均提升26 min,華為設備平均提升28 min,TD設備平均提升20 min,參與測試的OMC平均提升 50 min。基于統一采集平臺的采集性能提升離不開動態均衡技術的有效應用。
廣東移動統一采集平臺動態負載均衡技術現網運行的實際情況介紹如下。
通過運行負荷監控功能,系統可以監控到采集機運行時對硬件資源(CPU、內存、磁盤)的占用情況,采集機定期發送狀態信息給平臺,也可通過“手動刷新數據”按鈕實時刷新狀態信息,如圖6所示。
負載均衡權重因子可對采集機的硬件資源情況(如CPU總量、硬盤總量、內存總量、線程總數、采集能力、最大負荷數等)進行設置,如圖7所示。
統一采集平臺提供了運行負荷閾值查看功能,可查看的內容包括監控內容、下限值、上限值、系統配置、告警級別名稱、告警級別、采集機ID。同時,系統提供自由設定監控列的操作,通過選擇需要顯示的列,去除不關心的系統狀態參數以保證只監控關心的重點的運行狀態,如圖8所示。
可以查看單臺采集機的運行負荷閾值,如圖9所示。

圖6 運行負荷監控運行

圖7 采集機硬件資源情況設置界面

圖8 運行負荷閾值設置

圖9 單臺采集機的運行負荷閾值設置
從任務調研算法、云資源池搭建與硬件部署、負載均衡不同場景(常態、采集機出現故障、新增采集節點、網絡限制)的設計機制、負載均衡核心控制切換機制、負載均衡權重因子配置和負荷監控等角度,全面深入地對統一采集平臺的動態負載均衡技術進行了分析和研究。動態負載均衡技術是統一采集平臺的核心技術,為實現統一采集平臺的高效采集、穩定運行、硬件資源合理利用,均衡分配、采集機節點動態加載、靈活配置等方面的需求提供了有力的技術支撐。這些技術成果在實際的環境下得到了良好的應用效果和技術驗證,使統一采集平臺突破了傳統采集模式采集機利用率不合理、“冰山”式投入的困境。雖然取得了一定的應用效果,但仍有提升的空間,未來動態負載均衡技術在大數據采集領域的研究以及優化均衡權重因子算法,仍是統一采集平臺的重點研究方向。
1 Qualcomm.DO Advanced Smart Networks Overview,2011
2 郭輝,王智廣,周敬利.異構分布式系統中基于負載均衡的容錯調度算法.計算機學報,2005(11)
3 鄧華鋒,劉云生,肖迎元.分布式數據流處理系統的動態負載均衡技術.計算機科學,2007,34(7)
4 李坤,王百杰.服務器集群負載均衡技術研究及算法比較.計算機與現代化,2009(8)