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