李茂超,敬 昕
(中國鐵路南寧局集團有限公司 信息技術(shù)所,1.助理工程師,2.高級工程師,廣西 南寧 530029)
隨著鐵路信息化建設(shè)工作的日益深入,云計算管理平臺(下文簡稱云平臺)規(guī)模迅速擴大,截至2022年5月,中國鐵路南寧局集團有限公司(簡稱南寧局)云平臺部署服務(wù)器已超過200臺,同年計劃從基層單位至云平臺的系統(tǒng)94個,預(yù)計年底虛擬機規(guī)模將超過500臺,運維人員的工作量不斷增大。因此,研究資源自動擴容技術(shù)對提升運維效率、減輕人員運維壓力有重要意義。
南寧局部署的管理信息私有云、互聯(lián)網(wǎng)網(wǎng)站群、一體化生產(chǎn)集成平臺均采用云平臺架構(gòu),為集團公司各類生產(chǎn)、管理、互聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)提供了統(tǒng)一的計算、存儲及網(wǎng)絡(luò)資源。
南寧局采用的云平臺資源監(jiān)控平臺具有高度集成、分布式和開箱即用的特性,能夠?qū)Ψ?wù)器、網(wǎng)絡(luò)設(shè)備和存儲等硬件設(shè)備以及數(shù)據(jù)庫、中間件等軟件進行監(jiān)控,同時還支持快捷添加自定義監(jiān)控腳本,靈活實現(xiàn)對自研程序的監(jiān)控。監(jiān)控平臺的引入實現(xiàn)了600多套信息系統(tǒng)重要節(jié)點的監(jiān)控,改變了南寧局信息運維部門長期存在的人工巡檢的工作模式,有效提升了問題發(fā)現(xiàn)與解決效率。
但是,隨著信息系統(tǒng)規(guī)模和重要程度日益加大,虛擬化技術(shù)的廣泛使用,對人工處置故障的效率有了更高的要求。同時資源管理部門為節(jié)約資源往往采用最小規(guī)模分配,按需調(diào)整的資源管理模式,容易產(chǎn)生因業(yè)務(wù)突然增長、虛擬機資源調(diào)整不及時造成系統(tǒng)崩潰的重大風(fēng)險。
依據(jù)智能運管的理念,運維自動化不應(yīng)僅僅局限在資源監(jiān)控方面,更應(yīng)該在資源自動擴容方面發(fā)揮作用,真正實現(xiàn)“監(jiān)”、“控”全流程的自動化。
研究設(shè)計的智能運管技術(shù)方案主要包括四個部分,分別是云平臺、監(jiān)控平臺、資源管理程序和操作系統(tǒng)管理工具。
自動擴容技術(shù)架構(gòu)如圖1所示。
圖1 自動擴容技術(shù)架構(gòu)設(shè)計
云平臺主要由兩部分構(gòu)成,分別是計算節(jié)點和控制節(jié)點,計算節(jié)點用于提供虛擬機所需的計算資源,控制節(jié)點提供網(wǎng)絡(luò)管理和資源管控;在每臺虛擬機上均需安裝監(jiān)控平臺客戶端,控制節(jié)點需要安裝操作系統(tǒng)管理客戶端。監(jiān)控平臺服務(wù)器通過監(jiān)控平臺客戶端采集虛擬服務(wù)器當前CPU、內(nèi)存等資源使用情況信息,如果出現(xiàn)使用率過高情況,監(jiān)控平臺服務(wù)器會產(chǎn)生報警信息;自動化資源管理程序由調(diào)度器(Scheduler)和執(zhí)行器(Executer)兩個子進程組成,調(diào)度器用于周期性調(diào)用執(zhí)行器執(zhí)行相關(guān)服務(wù)功能,執(zhí)行器通過調(diào)用操作系統(tǒng)管理工具接口獲取出報警信息,篩選出所有與性能瓶頸相關(guān)的報警,調(diào)用操作系統(tǒng)管理工具接口對云平臺進行操作;操作系統(tǒng)管理服務(wù)發(fā)送虛擬機模板調(diào)整命令到安裝工具控制節(jié)點,工具將命令在控制節(jié)點執(zhí)行,實現(xiàn)對虛擬機的擴容。
在云平臺標準架構(gòu)下,所有資源都使用通用身份驗證機制的接口進行管理和配置[1]。云平臺所有組件以一種松散的方式組織在一起,分成一個個服務(wù),允許用戶按需插拔和使用。云平臺標準架構(gòu)如圖2。
圖2 云平臺標準架構(gòu)視圖
操作系統(tǒng)管理工具可以簡單的實現(xiàn)快速橫向擴展,并且高效地對服務(wù)器進行管理[2]。操作系統(tǒng)管理工具工作在C∕S模式下,既可以通過被控服務(wù)器上普通SSH服務(wù)進行管理,也可以通過操作系統(tǒng)管理工具專用客戶端代理軟件進行通信[3]。架構(gòu)與組件說明如圖3。
圖3 操作系統(tǒng)管理工具架構(gòu)與組件
操作系統(tǒng)管理服務(wù)器是運行管理服務(wù)的服務(wù)器。它向一個或多個運行著并已經(jīng)向服務(wù)器注冊過的操作系統(tǒng)管理客戶端發(fā)送指令,指令發(fā)送到端口為4505的總線上,之后再從端口地址為4506的總線上獲取返回結(jié)果[4]。
操作系統(tǒng)管理客戶端配置完后會立即向服務(wù)器進行注冊,并通過4505端口訂閱所有目標包含的消息??蛻舳私邮盏较⒑?,在本地執(zhí)行,執(zhí)行后產(chǎn)生的結(jié)果發(fā)送到端口號4506的事件總線上[5]。
速度是操作系統(tǒng)管理工具的最強項,速度的基礎(chǔ)就在于有這一套高性能的事件系統(tǒng)。操作系統(tǒng)管理消息總線使用的是ZeroMQ,它使創(chuàng)建異步拓撲以提供最快的通信成為可能。
為保證資源管理程序能通過監(jiān)控平臺接口中的報警信息唯一定位到云平臺中的虛擬機實例(如圖4),需要使監(jiān)控平臺在客戶端(如圖5)和服務(wù)器端(如圖6)配置的主機名,云平臺中實例名稱,以及操作系統(tǒng)管理客戶端中配置的客戶端ID(如圖7)均需相同。
圖4 云平臺實例配置
圖5 監(jiān)控平臺客戶端配置
圖6 監(jiān)控平臺服務(wù)器實例配置
圖7 操作系統(tǒng)管理客戶端id配置
為使資源管理程序能精準實現(xiàn)對出現(xiàn)性能瓶頸的服務(wù)器進行擴容,需要通過監(jiān)控平臺提供報警信息。監(jiān)控平臺提供了完善的接口程序,用于實現(xiàn)報警信息的提取。
為判斷虛擬機是否需要擴容,要將通過實例(host)名獲取實例id(hostid)信息,通過事件(event)獲取事件id(eventid),并以實例id和事件id共同篩選當前發(fā)生的報警事件,以此為根據(jù)對實例進行擴容。
監(jiān)控平臺提供了三種方法用于提取實例id,事件id和 報 警 信 息,分 別 是:host.get、event.get和problem.get。host.get用于根據(jù)被監(jiān)控實例列表獲取被監(jiān)控實例hostid,event.get用于根據(jù)與性能瓶頸相關(guān)的事件名篩選出相關(guān)的eventid,problem.get將結(jié)合host.get和event.get方法返回的hostid和eventid,判斷是否存與被控實例相關(guān)的性能瓶頸報警。通過這三個接口就可以從所有報警信息中,并定位實例,以此為根據(jù),對云平臺實例進行擴容操作。
圖8為使用host.get方法獲取hostid的代碼實現(xiàn),其中HOST_LIST為被控虛擬機列表,使用POST方法,將監(jiān)控平臺接口的返回hostid信息存入返回指令集中。
圖8獲取hostid
圖9 為使用event.get方法獲取eventid的代碼實現(xiàn),其中EVENT_NAME為與資源是否出現(xiàn)瓶頸相關(guān)的事件名,使用POST方法,將監(jiān)控平臺接口返回的eventid信息存入返回指令集中。
圖9獲取eventid
圖10 為使用hostid和eventid共同篩選當前存在的報警信息,判斷當前哪些被控服務(wù)器需要擴容,在此實現(xiàn)代碼中,如果執(zhí)行后返回報警信息,則表示hostid對應(yīng)的被控服務(wù)器已經(jīng)出現(xiàn)資源瓶頸,需要對其進行擴容操作。
圖10 報警信息采集實現(xiàn)
將上一步中所有存在資源瓶頸告警的被控服務(wù)器匯總成列表,并調(diào)用操作系統(tǒng)管理接口在云平臺控制節(jié)點上執(zhí)行遠程操作,逐一對被控服務(wù)器進行資源擴容。
通過將監(jiān)控平臺、云平臺、操作系統(tǒng)管理工具技術(shù)相結(jié)合,研發(fā)了一套資源管理程序,設(shè)計出一套適用于南寧局云平臺的虛擬機實例自動擴容方案,實現(xiàn)自動發(fā)現(xiàn)虛擬機實例的資源出現(xiàn)不足隱患,并對出現(xiàn)性能瓶頸隱患的虛擬機進行自動擴容,保證運行在虛擬機實例上的業(yè)務(wù)更加穩(wěn)定。結(jié)合鐵路業(yè)務(wù)特性,自動擴容技術(shù)還可以解決客運高峰、財務(wù)統(tǒng)計等可預(yù)見性資源調(diào)整的需求。
在試運行實驗過程中,通過人工干預(yù)虛擬機運算量檢驗功能,實驗結(jié)果顯示,從虛擬機資源占比超出閾值,到監(jiān)控平臺自動發(fā)現(xiàn)預(yù)警,再到操作系統(tǒng)管理工具主動干預(yù)完成虛擬機資源擴容,整個流程約30秒。按傳統(tǒng)運維經(jīng)驗,通過人工處置該故障,從資源問題發(fā)現(xiàn)到資源擴容申請、審核,再到最后的資源擴容需要數(shù)小時。所以,利用自動擴容技術(shù)能夠有效提升了運維自動化程度及運維效率。