李杰 白喆 陳武 胡芳
摘要:最近幾年,云計算技術發展較快,其主要能力是通過網絡將不同服務器的計算資源進行聚合,形成資源池,以供各個應用系統按需索取,動態提供計算服務,為大規模應用集群奠定基礎,針對上層應用,關注點在于如何快捷穩定地從池中獲取資源,如何對資源高效利用。按照當前的解決方案,通過將容器做集群處理,以編排調度的方式使用資源,對計算資源進行利用,是一個比較好的解決渠道,配合高效的編排框架,讓軟件的開發工作更加聚焦于邏輯的實現。同時,為了保證資源傳遞的可靠和高效,對于容器運行及計算資源的使用狀態進行監控,文章基于容器技術和調度編排技術,設計并實現了一種監控管理系統,以圖形化方式展現,具備一定的通用性,對于采用容器虛擬化技術和k8s編排框架構建的PaaS環境,能夠提供較高的兼容支持,實現運行環境的高效運維。
關鍵詞:容器;云計算;編排框架
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)14-0106-03
1 引言
容器[1]是當前最熱門的服務器端技術,其作為PaaS類型項目的最核心能力,提供應用運行時的隔離環境,該環境可以理解為程序運行的“沙箱”。早在2013年,AWS、OpenStack以及Cloud Foundry等PaaS項目已經助力云計算技術從概念到落地,包括IBM、華為、京東等主流技術廠商,均以實際行動啟動了以PaaS平臺為核心構建平臺層服務能力的變革。
為了支撐PaaS平臺的應用托管能力,主流用戶一般采用容器的方式進行項目部署,與傳統的方式相比,容器方式可很好地解決云端虛擬機和本地環境不一致的問題,因此經過一段時間的發展,以容器方式部署已經成為約定俗成的操作。在初期,Heroku、Pivotal、RedHat等容器類產品層出不窮,但他們都存在一個問題,即在部署之前的制品打包過于煩瑣,用戶需要為每種語言、每種框架甚至不同的版本都單獨打好和維護一個包,因為過于復雜,導致有些應用在本地運行時沒問題,但在PaaS平臺上運行則不太容易。為了解決該問題,Docker實現了“鏡像”功能,鏡像是直接由一個完整操作系統的所有文件和目錄構成,因此本地開發、測試環境以及運行環境可以做到完全一樣,同時打包好的鏡像還能夠作為制品重復使用。
由于容器鏡像的良好體驗,云計算領域相關項目開始依托該技術棧實現,同時也對PaaS的構架體系進行了重新梳理,重點對容器組織和管理規范的“容器編排”技術進行研究,目前最主流的是Kubernetes容器集群調度框架[2],該框架能夠對運行在大規模集群中的各種任務相互關系進行處理,進行作業編排和管理。
本文基于容器技術(Docker),依托kubernetes調度、編排和管理能力,對容器調度的功能進行梳理和劃分,并按照活動執行過程的關聯程度,抽象并開發對應的通用組件,形成資源監控的基礎功能服務清單,按照流轉順序進行集成[3],設計并實現了一套監控調度系統,能夠讓用戶在管理容器集群,運行業務應用的同時,更好地監控運行狀態和資源使用情況,提高巡檢運維的效率和準確性,有利于提高PaaS平臺對應用支撐的穩定性。
2 業務活動設計
本監控系統主要由11個業務活動模型組成,涵蓋了監控數據的獲取,存儲、分析和輸出展示,同時也可根據指標對系統運行情況進行巡檢,實現按照級別記錄日志、告知用戶、執行調度等功能。對于每個業務活動模型,進行了依賴關系的梳理以及活動內容定義。這樣在該系統的實現過程中,能夠更加清晰地鎖定功能邊界,跟蹤服務鏈路關系。
3 組件關聯設計
根據業務活動層11個模塊的具體功能要求,可以通過兩張組件關聯圖將涉及的組件關系進行梳理,對于系統需要的計算資源和網絡環境,將依賴基礎設施層的操作系統提供,通過計算、控制和展示的經典方式,將獲取到的環境信息經過分析輸出傳遞到展現層,以圖形化方式[4]為用戶提供有效數據。對于告警通知業務功能要求,可直接向kubernetes容器集群采集最直接的數據,采集組件為prometheus,其可以對容器主機的CPU、內存、磁盤等信息進行采集和展現[5],本系統中主要利用其數據采集能力,同時prometheus也提供告警組件alertmanager,可通過配置報警規則,發送報警信息到alertmanager上,該組件可對報警信息進行管理[6],包括silencing、inhibition,在聚合報警信息后,通過郵件、短信、微信等方式發送消息提示。
4 程序時序設計
上圖對本系統的5個關鍵服務組件(以告警通知為例)執行順序進行了說明,其中監控檢查涉及的計算、存儲、網絡及負載均衡活動時序狀態基本一致[7],相關信息均會按照相同的傳遞路線進行流轉,通過IaaS層獲取相關資源信息,分析后進行展現。在告警通知部分,信息來源的層級有一定差異,為直接從PaaS層容器集群管控框架獲取,prometheus組件抽取相關數據后,按照配置進行分析和轉發,alertmanager對系統內部和第三方系統進行告警信息的發送。
5 系統運行驗證
系統基于容器技術運行,通過虛擬化框架實現對應指標數據的獲取。在運行期間可監控環境組件健康情況、計算資源使用情況、網絡使用情況、存儲使用情況等,并且形成告警數據,按照配置規則進行告警信息的轉發。監控管理的類別包括:kubernetes基礎組件、網絡組件、監控組件、日志組件、其他組件等。
6 結語
本文設計了一種針對容器集群的資源監控和管理系統,并按照該設計思路落地實現。該類型的監控管理系統對于云計算環境或PaaS平臺均能夠提供好的監控支持。巡檢人員可根據對應的計算資源、告警日志等信息快速掌握環境狀態,高效準確地進行運維決策,降低容器集群的運維復雜度。
容器和編排框架的技術發展日新月異,開發工程師、運維工程師和架構師可根據本文思路,進一步結合最新技術進展豐富監控管理功能,為合理、穩健利用云計算技術拓寬道路。
參考文獻:
[1] 張怡.基于Docker的虛擬化應用平臺設計與實現[D].廣州:華南理工大學,2016.
[2] 陳彥菲.基于微服務與容器化的智能一體化平臺設計[J].智慧中國,2020(12):80-81.
[3] 宋漢松.容器網絡技術研究與前景展望[J].金融電子化,2019(12):88-89.
[4] 郭建磊,董蕾,邱忠杰.一種工業云PaaS平臺統一日志服務系統[J].信息技術與信息化,2020(3):37-39.
[5] 劉啟東.基于Prometheus的邊緣機房監控系統設計與實現[D].杭州:浙江大學,2021.
[6] 李翔.在私有Kubernetes集群中實現服務的負載均衡[J].電子技術與軟件工程,2020(14):36-38.
[7] 謝超群.基于Kubernetes容器云的應用研究[J].西安文理學院學報(自然科學版),2020,23(4):37-40.
收稿日期:2022-02-26
作者簡介:李杰(1984—),男,河南南陽人,工程師,碩士研究生,主要研究方向為云計算、微服務、人工智能、大數據。73204D0B-5291-4F58-9A13-9E563D3459D7