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