張 淵 ,郭濤峰 ,張攀翔 ,高建軍 ,臧佳艷
(1.中國移動(dòng)通信集團(tuán)廣東有限公司 廣州 510623;2.億陽信通股份有限公司 北京 100093)
隨著移動(dòng)通信和高性能網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,3G網(wǎng)絡(luò)、智能網(wǎng)以及LTE的不斷推廣和普及,在用戶數(shù)量增加的同時(shí)開通的業(yè)務(wù)也呈多樣化發(fā)展,數(shù)據(jù)業(yè)務(wù)量逐漸呈現(xiàn)上升趨勢(shì)。而隨著業(yè)務(wù)量的提高、訪問量和數(shù)據(jù)流量的快速增長,其處理能力和計(jì)算強(qiáng)度也相應(yīng)增大,數(shù)據(jù)采集的負(fù)荷越來越高,使得單一采集設(shè)備根本無法承擔(dān)。網(wǎng)管相關(guān)部分為了應(yīng)對(duì)采集機(jī)高負(fù)荷的狀況,頻頻增加價(jià)格昂貴的小型機(jī),用來解決采集效率降低、采集機(jī)高負(fù)荷下頻頻宕機(jī)的問題,以期提升采集層的穩(wěn)定性,保障支撐業(yè)務(wù)能夠順利運(yùn)行。然而,這種單純?cè)黾硬杉瘷C(jī)硬件的方式,卻很難成為一種高性價(jià)比、適應(yīng)長遠(yuǎn)發(fā)展的解決方案。
傳統(tǒng)的數(shù)據(jù)采集模式,各專業(yè)間的采集都是單獨(dú)建設(shè),呈離散分布,由于各專業(yè)網(wǎng)業(yè)務(wù)需求不一樣,采集的數(shù)據(jù)量也存在差異,這勢(shì)必造成專業(yè)間資源不能充分利用,不能互補(bǔ)。為了解決這種問題,統(tǒng)一采集平臺(tái)在移動(dòng)規(guī)劃OSS 2.0中首次被提出,從架構(gòu)上突破了傳統(tǒng)網(wǎng)管數(shù)據(jù)采集的建設(shè)模式,將各專業(yè)網(wǎng)中的NE/OMC/EMS作為一個(gè)大的設(shè)備源池,采集的數(shù)據(jù)統(tǒng)一由統(tǒng)一采集平臺(tái)提供,從而避免多應(yīng)用系統(tǒng)重復(fù)采集、數(shù)據(jù)“孤島”等情況存在。
統(tǒng)一采集平臺(tái)如何實(shí)現(xiàn)各專業(yè)間數(shù)據(jù)采集硬件資源的充分利用、負(fù)荷均勻分配,是達(dá)到OSS 2.0規(guī)劃中采集層“統(tǒng)一”的關(guān)鍵,而負(fù)載均衡技術(shù)為解決這些問題提供了一個(gè)技術(shù)支撐點(diǎn)。負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價(jià)、有效、透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。
近年來隨著云技術(shù)的快速發(fā)展,基于云平臺(tái)的集群計(jì)算逐步成為一種高性價(jià)比的并行/分布式計(jì)算資源。負(fù)載均衡是集群系統(tǒng)中的重要技術(shù),而動(dòng)態(tài)負(fù)載均衡技術(shù)的應(yīng)用更符合實(shí)際環(huán)境的需要,通過動(dòng)態(tài)平衡各個(gè)節(jié)點(diǎn)間的負(fù)載提高集群系統(tǒng)的性能。
目前,負(fù)載均衡技術(shù)主要應(yīng)用在以下幾個(gè)方面:DNS負(fù)載均衡、代理服務(wù)器負(fù)載均衡、地址轉(zhuǎn)換網(wǎng)關(guān)負(fù)載均衡、協(xié)議內(nèi)部支持負(fù)載均衡、NAT負(fù)載均衡、反向代理負(fù)載均衡、混合型負(fù)載均衡等。其中,混合型負(fù)載均衡常用于大型網(wǎng)絡(luò),由于多個(gè)服務(wù)器群內(nèi)的硬件設(shè)備、各自的規(guī)模、提供的服務(wù)等存在差異,考慮對(duì)每個(gè)服務(wù)器群采用最合適的負(fù)載均衡方式,然后在多個(gè)服務(wù)器群間再一次負(fù)載均衡或群集起來以一個(gè)整體向外界提供服務(wù)(即把多個(gè)服務(wù)器群當(dāng)作一個(gè)新的服務(wù)器群),從而達(dá)到最佳的性能。統(tǒng)一采集平臺(tái)的軟硬件環(huán)境、提供的服務(wù)等與混合型負(fù)載均衡基本一致,因此本研究基于該負(fù)載均衡應(yīng)用開展。
傳統(tǒng)的網(wǎng)管采集系統(tǒng)依賴于網(wǎng)管系統(tǒng),采取“煙囪”式的模式獨(dú)立建設(shè)。業(yè)務(wù)平臺(tái)上的應(yīng)用眾多,而每個(gè)應(yīng)用的建設(shè)在不同階段由不同的廠商來實(shí)施,采用不同的架構(gòu),基本上都是以“煙囪”式進(jìn)行運(yùn)維管理,每個(gè)應(yīng)用獨(dú)占物理服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)等資源。每個(gè)應(yīng)用為了保證服務(wù)質(zhì)量,在擴(kuò)容時(shí)一般都按照峰值時(shí)的需求,造成正常情況下一大部分資源被浪費(fèi),沒有被充分利用;而部分發(fā)展緩慢的業(yè)務(wù)資源難以及時(shí)回收,也造成資源浪費(fèi);專業(yè)網(wǎng)內(nèi)及網(wǎng)間的采集機(jī)資源也無法得到合理利用。
這種模式下,即使硬件資源投資逐年提升,仍無法得到良好的應(yīng)用效果,系統(tǒng)的穩(wěn)定性得不到保證。采集機(jī)運(yùn)行負(fù)荷不均、資源孤立等因素,導(dǎo)致個(gè)別采集機(jī)經(jīng)常性宕機(jī)的情況時(shí)有發(fā)生。
而突破網(wǎng)間及網(wǎng)內(nèi)資源的獨(dú)立限制,將離散的采集機(jī)有效地控制起來,并且合理利用和分配硬件資源的技術(shù),成為采集層急迫解決的難題。
為解決以上諸多現(xiàn)狀問題,統(tǒng)一采集平臺(tái)引入了采集節(jié)點(diǎn)任務(wù)動(dòng)態(tài)負(fù)載均衡技術(shù)。本文從動(dòng)態(tài)負(fù)載均衡原理、任務(wù)調(diào)度算法、資源池搭建和部署、不同場景下的負(fù)載均衡處理和設(shè)計(jì)機(jī)制、核心控制切換機(jī)制以及權(quán)重因子和負(fù)荷監(jiān)控等方面著手研究,使負(fù)載均衡技術(shù)能夠真正運(yùn)用到統(tǒng)一采集平臺(tái)中。
負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價(jià)有效的方法擴(kuò)展服務(wù)器帶寬和增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。大量的并發(fā)訪問或數(shù)據(jù)流量分擔(dān)到多臺(tái)節(jié)點(diǎn)設(shè)備上分別處理,減少用戶等待響應(yīng)的時(shí)間。網(wǎng)絡(luò)負(fù)載均衡則將工作負(fù)載在這些主機(jī)間進(jìn)行分配。對(duì)于其他服務(wù),只有一臺(tái)主機(jī)處理工作負(fù)載,針對(duì)這些服務(wù),網(wǎng)絡(luò)負(fù)載均衡允許網(wǎng)絡(luò)通信量流到一個(gè)主機(jī)上,并在該主機(jī)發(fā)生故障時(shí)將通信量移至其他主機(jī)。
負(fù)載均衡技術(shù)能夠解決網(wǎng)絡(luò)擁塞問題,就近提供服務(wù),實(shí)現(xiàn)地理位置無關(guān)性,能夠?yàn)橛脩籼峁└玫脑L問質(zhì)量,提高服務(wù)器的響應(yīng)速度,提高服務(wù)器及其他資源的利用效率,并且能夠避免網(wǎng)絡(luò)關(guān)鍵部位出現(xiàn)單點(diǎn)失效。
一個(gè)負(fù)載均衡算法通常包含以下3個(gè)組成部分。
·信息策略:制定任務(wù)放置策略的制定者使用的負(fù)載和任務(wù)量以及信息分配方式。
·傳送策略:基于任務(wù)和計(jì)算機(jī)負(fù)載,判斷是否要把一個(gè)任務(wù)傳送到其他計(jì)算機(jī)上處理。
·放置策略:對(duì)于適合傳送到其他計(jì)算機(jī)處理的任務(wù),選擇任務(wù)將被傳送到目的計(jì)算機(jī)。
負(fù)載均衡的3個(gè)組成部分之間以不同的方式相互作用。放置策略利用信息策略提供的負(fù)載信息,僅當(dāng)任務(wù)被傳送策略判斷為適于傳送之后才行動(dòng)。
目前,關(guān)于負(fù)載均衡任務(wù)調(diào)度的算法有:輪詢(round robin)、加權(quán)輪詢 (weighted round robin)、最少連接(least connections)、加權(quán)最少連接(weighted least connections)、隨機(jī) (random)、加權(quán)隨機(jī) (weighted random)、源地址散列(source hashing)、源地址端口散列(source&port hashing)、目的地址散列(destination hashing),但后兩種算法的實(shí)現(xiàn)相對(duì)比較復(fù)雜,應(yīng)用并不廣泛。
(1)輪詢算法
新的連接被依次輪詢分發(fā)到各個(gè)實(shí)服務(wù)器上,如第1個(gè)連接分發(fā)到第1臺(tái)服務(wù)器,第2個(gè)連接分配到第2臺(tái)服務(wù)器,依次輪詢。輪詢算法適合于服務(wù)器組中所有服務(wù)器都有相同的軟硬件配置并且平均服務(wù)請(qǐng)求相對(duì)均衡的情況。
(2)加權(quán)輪詢算法
根據(jù)服務(wù)器的不同處理能力,為每個(gè)服務(wù)器分配不同的權(quán)值,使其能夠接受相應(yīng)權(quán)值數(shù)的服務(wù)請(qǐng)求。根據(jù)實(shí)際服務(wù)器的配置情況和處理能力,給每臺(tái)實(shí)際服務(wù)器制定一個(gè)整數(shù)類型的權(quán)值,此整數(shù)值用來標(biāo)識(shí)服務(wù)器處理用戶請(qǐng)求的能力。在加權(quán)循環(huán)輪轉(zhuǎn)分配用戶請(qǐng)求時(shí),優(yōu)先請(qǐng)求分配權(quán)值大的服務(wù)器,權(quán)值大的服務(wù)器將被賦予更多的請(qǐng)求,一段時(shí)間后,各服務(wù)器處理請(qǐng)求數(shù)趨于各自權(quán)值的比例。加權(quán)輪詢算法能確保高性能的服務(wù)器得到更多的使用率,避免低性能的服務(wù)器負(fù)載過重。
(3)最少連接算法
最少連接算法對(duì)內(nèi)部需負(fù)載的每一臺(tái)服務(wù)器都有一個(gè)數(shù)據(jù)記錄,記錄當(dāng)前服務(wù)器正在處理的連接數(shù)量,當(dāng)有新的服務(wù)連接請(qǐng)求時(shí),把當(dāng)前請(qǐng)求分配給連接數(shù)最少的服務(wù)器,使均衡更加符合實(shí)際情況,負(fù)載更加均衡。最少連接算法適合長時(shí)處理的請(qǐng)求服務(wù),如FTP。
(4)加權(quán)最少連接算法
將加權(quán)與最少連接算法配合,根據(jù)連接數(shù)與加權(quán)比例計(jì)算當(dāng)前新連接應(yīng)該發(fā)往哪個(gè)服務(wù)器。
(5)隨機(jī)算法
將新連接隨機(jī)分發(fā)給具體的實(shí)服務(wù)器。
(6)加權(quán)隨機(jī)算法
使加權(quán)與隨機(jī)算法配合,根據(jù)隨機(jī)數(shù)與加權(quán)比例計(jì)算當(dāng)前新連接應(yīng)該發(fā)往哪個(gè)服務(wù)器。
(7)源地址散列算法
根據(jù)新連接的源IP地址進(jìn)行散列的結(jié)果決定將該新連接發(fā)往哪個(gè)實(shí)服務(wù)器。一般來說,來自相同客戶端的新連接會(huì)被散列到相同的實(shí)服務(wù)器。
統(tǒng)一采集平臺(tái)的負(fù)載均衡部署在管理服務(wù)器上,其任務(wù)調(diào)度采用一種類似加權(quán)輪詢采集機(jī)的方式,這種算法對(duì)負(fù)荷影響因素的分析相對(duì)全面,得出的均衡結(jié)論更加準(zhǔn)確,應(yīng)用也相對(duì)更廣泛。在統(tǒng)一采集平臺(tái)中,負(fù)載權(quán)重因子包括任務(wù)權(quán)重因子、采集機(jī)硬件負(fù)荷因子。其中,采集機(jī)負(fù)荷因子涵蓋CPU占用率、硬盤總量、內(nèi)存占用率、線程總數(shù)、采集機(jī)采集能力、最大負(fù)荷值、CPU上下文切換率;任務(wù)權(quán)重因子包括采集機(jī)支持最大任務(wù)數(shù)、運(yùn)行隊(duì)列中的任務(wù)數(shù)等。通過對(duì)兩大類權(quán)重因子的復(fù)雜運(yùn)算和分析,確保高性能的服務(wù)器得到更多的使用率、服務(wù)器運(yùn)行的各種任務(wù)得到動(dòng)態(tài)均衡分配和監(jiān)控,從而避免低性能的服務(wù)器負(fù)載過重,同時(shí)提升任務(wù)執(zhí)行的及時(shí)性和采集平臺(tái)自身的穩(wěn)定性。在加權(quán)輪詢算法的實(shí)現(xiàn)上,統(tǒng)一采集平臺(tái)要經(jīng)過4個(gè)策略處理步驟,分別為傳送策略、選擇策略、放置策略、信息策略,具體介紹如下。
·傳送策略用來決定一個(gè)采集節(jié)點(diǎn)是否適合參與一次任務(wù)的遷移,在本次遷移中,采集節(jié)點(diǎn)可以作為發(fā)送節(jié)點(diǎn),也可以作為接收節(jié)點(diǎn)。傳送策略使用閾值策略,當(dāng)一個(gè)采集機(jī)節(jié)點(diǎn)產(chǎn)生一個(gè)新的任務(wù)時(shí),傳送策略判斷該節(jié)點(diǎn)的負(fù)載超過上限閾值TH,它成為發(fā)送節(jié)點(diǎn)遷移任務(wù);當(dāng)一個(gè)節(jié)點(diǎn)的負(fù)荷降到下限閾值TL,傳送策略決定該節(jié)點(diǎn)為可用采集機(jī)節(jié)點(diǎn),具備分擔(dān)采集任務(wù)負(fù)載。其中,TH與TL值可以在統(tǒng)一采集平臺(tái)的UI界面中設(shè)置。
·選擇策略在傳送策略之后啟動(dòng),負(fù)責(zé)將任務(wù)向采集機(jī)任務(wù)開銷較小的服務(wù)器上轉(zhuǎn)移。統(tǒng)一采集平臺(tái)對(duì)策略的選擇考慮了兩種因素:其一,轉(zhuǎn)移的額外開銷經(jīng)計(jì)算比較后代價(jià)最小;其二,如果被選中的采集任務(wù)可以運(yùn)行足夠長的時(shí)間,那么可以認(rèn)為采集節(jié)點(diǎn)為可接受選擇策略。
·放置策略確定進(jìn)程遷移目的節(jié)點(diǎn),將任務(wù)遷移到系統(tǒng)中負(fù)載最輕的節(jié)點(diǎn)。統(tǒng)一采集平臺(tái)的放置策略采取“輪詢”方式,一個(gè)采集節(jié)點(diǎn)向另外的節(jié)點(diǎn)詢問對(duì)方是否適合作為傳送目標(biāo)節(jié)點(diǎn)。詢問節(jié)點(diǎn)的選擇基于上一次的輪詢信息,通過發(fā)送詢問的廣播分組尋找任意一個(gè)負(fù)載均衡的可用節(jié)點(diǎn)。
·信息策略的選取是采集服務(wù)器負(fù)載均衡算法的核心,它的選擇直接影響到負(fù)載均衡的性能,一個(gè)好的策略可以使得系統(tǒng)的性能得到很大提高。集群系統(tǒng)的信息策略決定系統(tǒng)節(jié)點(diǎn)的信息何時(shí)被收集、從何處收集這些信息、具體要收集哪些信息以及收集到的信息的管理方式和處理效率。統(tǒng)一采集平臺(tái)的負(fù)載均衡算法采取周期性收集策略和時(shí)間驅(qū)動(dòng)策略;收集到的信息的管理可以采用集中式,也可以采用分散式。
負(fù)載均衡的實(shí)現(xiàn)過程如圖1所示,具體介紹如下。
·管理控制分發(fā)任務(wù)線程接收到待發(fā)任務(wù);
·判斷是否為定向任務(wù);
·如果是定向任務(wù),找到定向采集機(jī),直接下發(fā),如果不是定向任務(wù),找到所有適合該任務(wù)的采集機(jī);
·計(jì)算所有采集機(jī)的權(quán)重和;
·取當(dāng)前所有未完成的任務(wù)數(shù)+子任務(wù)數(shù) (以前未完成的任務(wù)數(shù)+本次待發(fā)的任務(wù)數(shù));
·循環(huán)所有采集機(jī),找出最優(yōu)采集機(jī),下發(fā)任務(wù);
·如果沒有找到采集機(jī),進(jìn)入重新下發(fā)任務(wù)隊(duì)列;
·在所有未完成的任務(wù)緩存中緩存該任務(wù);
·在該采集機(jī)未完成的任務(wù)緩存中緩存該任務(wù);
·任務(wù)完成后,回收緩存的任務(wù)。
循環(huán)采集機(jī)的流程介紹如下。
·取一個(gè)采集機(jī)。
·判斷CPU和內(nèi)存中使用率最大的數(shù)是否超過設(shè)置上限。心跳中的CPU和內(nèi)存的使用率與采集機(jī)的DAL_MD_INFO表采集機(jī)最大負(fù)荷值字段值比較,如果大于DAL_MD_INFO表中采集機(jī)的最大負(fù)荷值,則不給該采集機(jī)分配任務(wù)。
·計(jì)算采集機(jī)的應(yīng)分任務(wù),應(yīng)分任務(wù)=采集機(jī)權(quán)重/所有采集機(jī)權(quán)重和×(所有未完成的任務(wù)數(shù)+子任務(wù)數(shù));采集機(jī)權(quán)重值來自DAL_MD_INFO表中的MD_POWER字段;所有未完成的任務(wù)數(shù)來自于Task Status Manager類中原緩存變量的長度。
·計(jì)算與該采集實(shí)際未完成的任務(wù)數(shù)的差值,稱任務(wù)空閑值,任務(wù)空閑值=應(yīng)分任務(wù)-實(shí)際未完成任務(wù)。
·比較各采集機(jī)的任務(wù)空閑值,保存任務(wù)空閑值最大的采集機(jī)名稱。
·循環(huán)完畢后,返回采集機(jī)名稱。
經(jīng)過研究和實(shí)踐得出,云平臺(tái)資源池建設(shè)過程中,當(dāng)遵循以下幾個(gè)原則時(shí),效率最高、方案最可行。
圖1 負(fù)載均衡流程
·不同CPU指令集的服務(wù)器資源池之間無法共享資源,需獨(dú)立建池;
·結(jié)合機(jī)房分布,分散設(shè)置各資源池;存儲(chǔ)設(shè)備需與關(guān)聯(lián)服務(wù)器設(shè)置在同一機(jī)房;
·數(shù)據(jù)實(shí)時(shí)交互的兩大系統(tǒng)需設(shè)置相同或相近的機(jī)房;
·充分考慮對(duì)現(xiàn)有設(shè)備的利舊;
·能夠通過內(nèi)網(wǎng)不同安全域?qū)崿F(xiàn)相同資源池的共享;
·建立與云計(jì)算相適應(yīng)的IT管理工具和IT運(yùn)維管理體系。
為了兼顧采集效率和經(jīng)濟(jì)投入效率,統(tǒng)一采集平臺(tái)需要支持兩種模式下的云資源池搭建方式:完全基于x86構(gòu)建資源池;考慮硬件利舊,支持x86與小型機(jī)(原有)混搭構(gòu)建資源池。
對(duì)應(yīng)于分布式采集方案,集中采集是將采集機(jī)放在網(wǎng)管服務(wù)器側(cè)(如圖2(a)所示),在網(wǎng)絡(luò)向萬兆比特發(fā)展的大趨勢(shì)下,原則上盡量采用集中采集方式。
圖2 集中式采集和分散式采集示意
對(duì)于采集數(shù)據(jù)量特別大的情況,如信令監(jiān)測(cè),可考慮采取分散采集方式(如圖2(b)所示)。對(duì)于多省集中且采用網(wǎng)元直聯(lián)采集方式的采集平臺(tái),首先在屬地省進(jìn)行采集收斂和數(shù)據(jù)壓縮,然后再接入采集平臺(tái)。
不管是分布式采集還是集中式采集,采集管控均采用集中部署方式,集中進(jìn)行采集任務(wù)調(diào)度和采集監(jiān)控。
(1)計(jì)算資源
針對(duì)集中采集方案,考慮到云計(jì)算的發(fā)展趨勢(shì),宜考慮統(tǒng)一采用x86主機(jī)資源池進(jìn)行建設(shè)。
·部署在云資源池的內(nèi)聯(lián)或外聯(lián)DMZ;
·除考慮利舊小型機(jī)外,新增采集機(jī)均采用x86主機(jī);
·可按省份、專業(yè)、網(wǎng)元?jiǎng)澐植杉瘷C(jī),根據(jù)需要使用虛擬化技術(shù),提高采集節(jié)點(diǎn)的利用率,實(shí)現(xiàn)采集機(jī)N+1高可用方案。
(2)存儲(chǔ)資源
·采集共享數(shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù),采用數(shù)據(jù)庫存儲(chǔ);
·采集原始數(shù)據(jù)文件、日志文件,采用文件存儲(chǔ);
·數(shù)據(jù)量巨大時(shí),考慮采用分布式數(shù)據(jù)庫和分布式文件系統(tǒng)。
硬件部署如圖3所示。
統(tǒng)一采集平臺(tái)具備系統(tǒng)穩(wěn)定性、高可用性、可擴(kuò)展性,在硬件部署上支持采集機(jī)集群、管理服務(wù)器集群方式?;谠瀑Y源池實(shí)現(xiàn)采集機(jī)集群、動(dòng)態(tài)負(fù)載均衡。管理服務(wù)器資源池層,支持多臺(tái)管理服務(wù)器互備份的功能。
3.4.1 常態(tài)下的負(fù)載均衡實(shí)現(xiàn)機(jī)制
采集機(jī)負(fù)載均衡要求將無定向采集機(jī)的采集任務(wù),根據(jù)采集機(jī)負(fù)載情況動(dòng)態(tài)分配給負(fù)載較低的采集機(jī),主要通過以下方式保障:
·所有采集廠商適配器包在管理監(jiān)控平臺(tái)注冊(cè)并同步到所有采集機(jī)上,新增采集機(jī)自動(dòng)獲取全部廠商包,以保證非定向采集任務(wù)可以被分配到任何一臺(tái)采集機(jī)上;
·采集機(jī)定時(shí)反饋?zhàn)陨頎顟B(tài)信息,包括正在執(zhí)行的線程數(shù)、內(nèi)存占用、CPU負(fù)荷信息,供管理平臺(tái)計(jì)算負(fù)載、下發(fā)任務(wù);
·管理監(jiān)控平臺(tái)的狀態(tài)監(jiān)控管理模塊,通過接收采集機(jī)定時(shí)反饋的自身信息判斷是否有采集機(jī)宕機(jī),如果宕機(jī),則將該采集機(jī)所有非定向任務(wù)負(fù)載分擔(dān)給正常的采集機(jī),并發(fā)出相關(guān)告警。
任務(wù)分發(fā)模塊根據(jù)采集機(jī)的負(fù)載情況,將可以負(fù)載均衡的任務(wù)分發(fā)到負(fù)載較低的采集機(jī)上進(jìn)行采集,將定向任務(wù)發(fā)到指定或初次采集的采集機(jī)上進(jìn)行采集。
其內(nèi)部處理結(jié)構(gòu)如圖4所示。
任務(wù)類型判斷模塊:合并后的任務(wù)提交到分發(fā)通道,任務(wù)類型判斷模塊從通道中讀取任務(wù),并根據(jù)任務(wù)類型、采集機(jī)狀態(tài)和負(fù)載均衡算法選擇采集機(jī),將采集機(jī)信息存入任務(wù)對(duì)象。
消息發(fā)送模塊:將任務(wù)消息發(fā)送到任務(wù)采集機(jī)隊(duì)列中,采集機(jī)獲取后進(jìn)行相關(guān)采集工作。如果是特殊任務(wù),直接從任務(wù)中取出采集機(jī)信息下發(fā)到采集機(jī)。
負(fù)載均衡算法可以參考的維度包括:CPU占用率、內(nèi)存占用率、采集機(jī)采集能力、采集機(jī)未完成的任務(wù)數(shù)、任務(wù)負(fù)載權(quán)重等。
3.4.2 采集機(jī)出現(xiàn)故障時(shí)的負(fù)載均衡實(shí)現(xiàn)機(jī)制
圖3 硬件部署
圖4 任務(wù)分發(fā)內(nèi)部處理結(jié)構(gòu)
采集節(jié)點(diǎn)實(shí)時(shí)上報(bào)心跳信息給管理服務(wù)器,心跳信息中包含系統(tǒng)資源占用情況,包括CPU、內(nèi)存占用情況,管理服務(wù)器通過心跳信息及時(shí)掌握各采集節(jié)點(diǎn)的狀態(tài),管理服務(wù)器在3個(gè)心跳周期沒有收到心跳就置該采集節(jié)點(diǎn)為不可用狀態(tài),不會(huì)再給該采集節(jié)點(diǎn)下發(fā)任務(wù),而原有分配到該采集機(jī)的任務(wù)會(huì)自動(dòng)分配到其他采集機(jī)上,不會(huì)影響數(shù)據(jù)的正常采集,當(dāng)采集機(jī)恢復(fù)后將繼續(xù)向其分配采集任務(wù)。
同時(shí),在采集機(jī)節(jié)點(diǎn)發(fā)生故障時(shí),系統(tǒng)具備可配置節(jié)點(diǎn)故障發(fā)送機(jī)制,能夠第一時(shí)間以消息(告警)的形式通知運(yùn)維人員,對(duì)采集機(jī)故障進(jìn)行及時(shí)干預(yù),避免由于采集任務(wù)分擔(dān)到其他采集機(jī)后造成負(fù)荷過高而產(chǎn)生更大的故障損失。
出現(xiàn)故障時(shí)的處理過程如圖5所示。
3.4.3 新增采集機(jī)時(shí)的負(fù)載均衡實(shí)現(xiàn)機(jī)制
統(tǒng)一采集平臺(tái)提供了一種采集機(jī)自動(dòng)加載機(jī)制,通過可視化界面對(duì)新增的采集機(jī)進(jìn)行配置,配置完成后即可直接用于采集數(shù)據(jù),過程中不需要重新啟動(dòng)系統(tǒng)和程序。管理監(jiān)控平臺(tái)的狀態(tài)監(jiān)控管理模塊經(jīng)過輪詢方式主動(dòng)發(fā)現(xiàn)新增采集機(jī),建立心跳連接,探測(cè)該采集機(jī)的自身健康狀況,經(jīng)過負(fù)載權(quán)衡因子計(jì)算后,判斷為可用采集機(jī)。任務(wù)分發(fā)模塊,將可以采集任務(wù)自動(dòng)分發(fā)到新的采集節(jié)點(diǎn)上,新增采集機(jī)根據(jù)任務(wù)進(jìn)行采集。
3.4.4 網(wǎng)絡(luò)限制,采集機(jī)分組機(jī)制
由于網(wǎng)絡(luò)路由限制,允許對(duì)采集節(jié)點(diǎn)進(jìn)行分組,在采集節(jié)點(diǎn)組內(nèi)部進(jìn)行負(fù)載均衡,支持將某個(gè)采集源的采集定向到某一個(gè)采集節(jié)點(diǎn),如對(duì)數(shù)據(jù)網(wǎng)中業(yè)務(wù)系統(tǒng)的采集,采集機(jī)必須部署在專業(yè)域內(nèi)部,部署在網(wǎng)管中心的采集機(jī)不能訪問,這樣就可以把部署在專業(yè)域內(nèi)部的幾臺(tái)采集機(jī)分為一個(gè)組,采集任務(wù)可以在這幾臺(tái)機(jī)器之間進(jìn)行負(fù)載均衡。
圖5 采集機(jī)出現(xiàn)故障時(shí)的負(fù)載均衡示意
實(shí)踐證明,采集機(jī)對(duì)設(shè)備訪問時(shí)有網(wǎng)絡(luò)限制等場景下,用采集機(jī)分組方式解決動(dòng)態(tài)負(fù)載均衡面臨的問題,效率最好,見表1。
統(tǒng)一采集平臺(tái)提供一種保障負(fù)載均衡穩(wěn)定性機(jī)制,即核心控制能夠自動(dòng)切換。目前,負(fù)載均衡控制器程序部署在統(tǒng)一采集平臺(tái)的“主—備”管理服務(wù)器中。
(1)儲(chǔ)備切換機(jī)制
備用服務(wù)器定期(可設(shè)置)從主用服務(wù)器同步數(shù)據(jù),外部自身監(jiān)控模塊實(shí)時(shí)監(jiān)控主用服務(wù)器的進(jìn)程狀態(tài)和心跳信息。當(dāng)主用服務(wù)器出現(xiàn)異常后,核心管理控制器自動(dòng)切換到備用管理服務(wù)器,同時(shí)自身監(jiān)控模塊會(huì)發(fā)送告警給監(jiān)控類系統(tǒng),并以短信方式發(fā)送給維護(hù)人員。此時(shí),可以查看當(dāng)前時(shí)間段數(shù)據(jù)是否正常,必要時(shí)進(jìn)行數(shù)據(jù)補(bǔ)采操作。
(2)主備核心控制器間的信息同步
核心控制服務(wù)器上部署內(nèi)存數(shù)據(jù)庫 (HSQLDB)等程序,在備用系統(tǒng)上配置每10 min會(huì)把主用核心控制服務(wù)器上的HSQLDB、核心服務(wù)同步一次。HSQLDB中保存有設(shè)備的訪問信息和任務(wù)信息,核心服務(wù)保存有適配器。
表1 刀片機(jī)分組模式與不分組模式不同場景下對(duì)比
主備切換時(shí),主用核心控制器上已經(jīng)下發(fā)給采集機(jī)的任務(wù)會(huì)在采集機(jī)上正常運(yùn)行,剛生成還沒有下發(fā)的任務(wù)會(huì)緩存在HSQLDB中,備用核心控制器啟動(dòng)后會(huì)重新下發(fā)這些任務(wù),然后按時(shí)生成后續(xù)的任務(wù)。整個(gè)過程理論上不會(huì)存在任務(wù)丟失的情況。
(3)主備核心控制異常監(jiān)控
主用核心控制器每30 s會(huì)輸出心跳,外部自身監(jiān)控模塊實(shí)時(shí)監(jiān)控該心跳信息,當(dāng)超過1.5 min沒有心跳時(shí)就發(fā)送告警信息到綜合監(jiān)控系統(tǒng),同時(shí)每5 min掃描1次進(jìn)程狀態(tài),當(dāng)發(fā)現(xiàn)進(jìn)程缺失時(shí)也會(huì)發(fā)送告警信息到綜合監(jiān)控系統(tǒng)。
(1)負(fù)載均衡權(quán)值因子設(shè)置
統(tǒng)一采集平臺(tái)的動(dòng)態(tài)負(fù)載均衡權(quán)重因子能夠靈活配置。系統(tǒng)提供可視化權(quán)重配置界面,用戶可以根據(jù)采集機(jī)以及任務(wù)負(fù)荷的實(shí)際情況修改權(quán)重值,能夠修改的權(quán)值因子包括CPU占用率、硬盤總量、內(nèi)存占用率、線程總數(shù)、采集機(jī)采集能力、最大負(fù)荷值、CPU上下文切換率、采集機(jī)支持最大任務(wù)數(shù)、運(yùn)行隊(duì)列中的任務(wù)數(shù)。
(2)負(fù)載均衡運(yùn)行狀況監(jiān)控
采集任務(wù)監(jiān)控:通過監(jiān)控采集節(jié)點(diǎn)狀態(tài),判斷任務(wù)分發(fā)路由,實(shí)現(xiàn)負(fù)載均衡。采集狀態(tài)監(jiān)控包括負(fù)載均衡狀態(tài)監(jiān)控、采集任務(wù)監(jiān)控、采集機(jī)負(fù)荷監(jiān)控。各監(jiān)控功能除實(shí)現(xiàn)后臺(tái)監(jiān)控外,還提供前臺(tái)查看界面。采集任務(wù)的啟停除通過調(diào)度程序后臺(tái)自動(dòng)控制外,還可通過前臺(tái)界面監(jiān)控任務(wù)執(zhí)行過程,更新任務(wù)執(zhí)行狀態(tài),并可以手動(dòng)干預(yù)任務(wù)的啟停。
負(fù)載均衡狀態(tài)監(jiān)控:任務(wù)負(fù)載均衡查詢功能監(jiān)控任務(wù)負(fù)載均衡狀態(tài),包括查詢各個(gè)采集機(jī)的總?cè)蝿?wù)個(gè)數(shù)、采集機(jī)任務(wù)數(shù)、采集機(jī)組任務(wù)數(shù)等。系統(tǒng)可定期更新狀態(tài)信息,支持按照監(jiān)控列進(jìn)行升序、降序排序,支持監(jiān)控列的自由設(shè)定操作,用戶可通過選擇需要顯示的列,去除不關(guān)心的系統(tǒng)狀態(tài)參數(shù),以保證只監(jiān)控關(guān)心的、重點(diǎn)的運(yùn)行狀態(tài)。
采集任務(wù)監(jiān)控:能夠監(jiān)控采集機(jī)當(dāng)前任務(wù)正在執(zhí)行的狀態(tài),可選擇任務(wù)狀態(tài)、采集機(jī)、采集源、任務(wù)開始時(shí)間、任務(wù)結(jié)束時(shí)間作為查詢條件過濾采集任務(wù),任務(wù)狀態(tài)包括新任務(wù)、正在執(zhí)行、成功、失敗、全部,可通過圖形界面查看任務(wù)流程,并可以呈現(xiàn)每個(gè)任務(wù)執(zhí)行到的具體步驟以及每個(gè)步驟的執(zhí)行情況和詳細(xì)信息。
運(yùn)行負(fù)荷監(jiān)控:可監(jiān)控到采集機(jī)運(yùn)行時(shí)對(duì)硬件資源(CPU、內(nèi)存、磁盤)的占用情況,超過閾值后發(fā)送告警。采集機(jī)定期發(fā)送狀態(tài)信息用于采集機(jī)負(fù)荷監(jiān)控,負(fù)荷監(jiān)控的內(nèi)容包括采集機(jī)別名、采集主機(jī)IP地址、CPU利用率、CPU總量(G×N)、內(nèi)存占用(MB)、虛擬機(jī)內(nèi)存總量(MB)、磁盤利用率、磁盤總量(GB)、心跳閾值(s)、心跳時(shí)間、采集機(jī)主機(jī)名稱等。
目前,本文所提及的動(dòng)態(tài)負(fù)載技術(shù)和研究成果,已在中國移動(dòng)通信集團(tuán)廣東有限公司(以下簡稱廣東移動(dòng))統(tǒng)一采集平臺(tái)項(xiàng)目中得到了驗(yàn)證和實(shí)施。
從實(shí)施規(guī)模和應(yīng)用效果看,采集機(jī)的數(shù)據(jù)采集能力得到了一定的提升。目前,統(tǒng)計(jì)數(shù)據(jù)得出:平臺(tái)日處理原始文件145 GB,每小時(shí)KPI任務(wù)量超過700個(gè),每小時(shí)KPI表數(shù)據(jù)量超過1100條,每小時(shí)counter任務(wù)量超過5000個(gè),每小時(shí)counter表數(shù)據(jù)量超過8000萬條,任務(wù)平均執(zhí)行時(shí)間≤48 s。從數(shù)據(jù)及時(shí)性對(duì)比結(jié)果看,現(xiàn)網(wǎng)運(yùn)行的愛立信設(shè)備數(shù)據(jù)采集到KPI的生成時(shí)間平均提升26 min,華為設(shè)備平均提升28 min,TD設(shè)備平均提升20 min,參與測(cè)試的OMC平均提升 50 min。基于統(tǒng)一采集平臺(tái)的采集性能提升離不開動(dòng)態(tài)均衡技術(shù)的有效應(yīng)用。
廣東移動(dòng)統(tǒng)一采集平臺(tái)動(dòng)態(tài)負(fù)載均衡技術(shù)現(xiàn)網(wǎng)運(yùn)行的實(shí)際情況介紹如下。
通過運(yùn)行負(fù)荷監(jiān)控功能,系統(tǒng)可以監(jiān)控到采集機(jī)運(yùn)行時(shí)對(duì)硬件資源(CPU、內(nèi)存、磁盤)的占用情況,采集機(jī)定期發(fā)送狀態(tài)信息給平臺(tái),也可通過“手動(dòng)刷新數(shù)據(jù)”按鈕實(shí)時(shí)刷新狀態(tài)信息,如圖6所示。
負(fù)載均衡權(quán)重因子可對(duì)采集機(jī)的硬件資源情況(如CPU總量、硬盤總量、內(nèi)存總量、線程總數(shù)、采集能力、最大負(fù)荷數(shù)等)進(jìn)行設(shè)置,如圖7所示。
統(tǒng)一采集平臺(tái)提供了運(yùn)行負(fù)荷閾值查看功能,可查看的內(nèi)容包括監(jiān)控內(nèi)容、下限值、上限值、系統(tǒng)配置、告警級(jí)別名稱、告警級(jí)別、采集機(jī)ID。同時(shí),系統(tǒng)提供自由設(shè)定監(jiān)控列的操作,通過選擇需要顯示的列,去除不關(guān)心的系統(tǒng)狀態(tài)參數(shù)以保證只監(jiān)控關(guān)心的重點(diǎn)的運(yùn)行狀態(tài),如圖8所示。
可以查看單臺(tái)采集機(jī)的運(yùn)行負(fù)荷閾值,如圖9所示。
圖6 運(yùn)行負(fù)荷監(jiān)控運(yùn)行
圖7 采集機(jī)硬件資源情況設(shè)置界面
圖8 運(yùn)行負(fù)荷閾值設(shè)置
圖9 單臺(tái)采集機(jī)的運(yùn)行負(fù)荷閾值設(shè)置
從任務(wù)調(diào)研算法、云資源池搭建與硬件部署、負(fù)載均衡不同場景(常態(tài)、采集機(jī)出現(xiàn)故障、新增采集節(jié)點(diǎn)、網(wǎng)絡(luò)限制)的設(shè)計(jì)機(jī)制、負(fù)載均衡核心控制切換機(jī)制、負(fù)載均衡權(quán)重因子配置和負(fù)荷監(jiān)控等角度,全面深入地對(duì)統(tǒng)一采集平臺(tái)的動(dòng)態(tài)負(fù)載均衡技術(shù)進(jìn)行了分析和研究。動(dòng)態(tài)負(fù)載均衡技術(shù)是統(tǒng)一采集平臺(tái)的核心技術(shù),為實(shí)現(xiàn)統(tǒng)一采集平臺(tái)的高效采集、穩(wěn)定運(yùn)行、硬件資源合理利用,均衡分配、采集機(jī)節(jié)點(diǎn)動(dòng)態(tài)加載、靈活配置等方面的需求提供了有力的技術(shù)支撐。這些技術(shù)成果在實(shí)際的環(huán)境下得到了良好的應(yīng)用效果和技術(shù)驗(yàn)證,使統(tǒng)一采集平臺(tái)突破了傳統(tǒng)采集模式采集機(jī)利用率不合理、“冰山”式投入的困境。雖然取得了一定的應(yīng)用效果,但仍有提升的空間,未來動(dòng)態(tài)負(fù)載均衡技術(shù)在大數(shù)據(jù)采集領(lǐng)域的研究以及優(yōu)化均衡權(quán)重因子算法,仍是統(tǒng)一采集平臺(tái)的重點(diǎn)研究方向。
1 Qualcomm.DO Advanced Smart Networks Overview,2011
2 郭輝,王智廣,周敬利.異構(gòu)分布式系統(tǒng)中基于負(fù)載均衡的容錯(cuò)調(diào)度算法.計(jì)算機(jī)學(xué)報(bào),2005(11)
3 鄧華鋒,劉云生,肖迎元.分布式數(shù)據(jù)流處理系統(tǒng)的動(dòng)態(tài)負(fù)載均衡技術(shù).計(jì)算機(jī)科學(xué),2007,34(7)
4 李坤,王百杰.服務(wù)器集群負(fù)載均衡技術(shù)研究及算法比較.計(jì)算機(jī)與現(xiàn)代化,2009(8)