楊代才,王華,王俊超,喬木,王娟娟,賴安偉
(1.湖北省氣象信息與技術(shù)保障中心,武漢430074;2.中國氣象局武漢暴雨研究所暴雨監(jiān)測預(yù)警湖北省重點(diǎn)實(shí)驗(yàn)室,武漢430205)
隨著大氣監(jiān)測和預(yù)報(bào)預(yù)警服務(wù)需求的提升,各類探測設(shè)備(劉思瑤等,2021;余蓉等,2021)和數(shù)值模式預(yù)報(bào)系統(tǒng)(夏軍等,2019)的時(shí)間、空間分辨率不斷提高,所產(chǎn)生的數(shù)據(jù)量不斷增大。中國氣象局武漢暴雨研究所建立的基于雙偏振雷達(dá)、X波段雷達(dá)、邊界層風(fēng)廓線雷達(dá)等多種探測裝備的暴雨監(jiān)測外場試驗(yàn)基地初具規(guī)模,依托該基地以及多個(gè)國家自然基金重點(diǎn)項(xiàng)目開展聯(lián)合觀測試驗(yàn),獲得了大量的觀測資料和試驗(yàn)數(shù)據(jù)(傅云飛,2019);依據(jù)多途徑探測資料的融合分析系統(tǒng)已經(jīng)全年業(yè)務(wù)運(yùn)行,可提供每3 h間隔10 km分辨率的中尺度分析場;華中區(qū)域中尺度數(shù)值天氣預(yù)報(bào)模式可提供各種高分辨率的預(yù)報(bào)產(chǎn)品;武漢RUC快速更新循環(huán)預(yù)報(bào)系統(tǒng)更是達(dá)到了1.5 km 水平分辨率、15 min 分析更新頻率、1 h 預(yù)報(bào)更新頻率、0~12 h 預(yù)報(bào)時(shí)效的快速循環(huán)分析系統(tǒng)(賴安偉等,2021);華中區(qū)域環(huán)境氣象數(shù)值預(yù)報(bào)業(yè)務(wù)系統(tǒng)能夠提供華中區(qū)域9 km 分辨率、0~78 h 內(nèi)逐小時(shí)6 種污染物濃度及能見度數(shù)值預(yù)報(bào)產(chǎn)品(劉琳等,2018)。
大量氣象及氣象敏感行業(yè)所產(chǎn)生的各類結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),使氣象數(shù)據(jù)具有了大數(shù)據(jù)的海量性、多樣性與高速更新的特征,可以說真正進(jìn)入了氣象大數(shù)據(jù)時(shí)代(沈文海,2019;劉媛媛等,2021)。氣象數(shù)據(jù)價(jià)值隨時(shí)間往往呈斷崖式下跌,必須第一時(shí)間融合相關(guān)應(yīng)用技術(shù),深度挖掘氣象數(shù)據(jù)所存在的價(jià)值。因此,氣象大數(shù)據(jù)業(yè)務(wù)處理平臺(tái)往往要求數(shù)據(jù)實(shí)時(shí)在線,并且可以隨時(shí)被調(diào)用與計(jì)算(邱晨輝,2021)。氣象大數(shù)據(jù)主要分為行業(yè)大數(shù)據(jù)和互聯(lián)網(wǎng)大數(shù)據(jù)兩種(沈文海,2016)。行業(yè)大數(shù)據(jù)包括:與氣象部門內(nèi)部業(yè)務(wù)工作息息相關(guān)、由專業(yè)設(shè)備采集的內(nèi)部氣象數(shù)據(jù);與水利、環(huán)保、生態(tài)等其他行業(yè)部門進(jìn)行數(shù)據(jù)共享、交換獲得的數(shù)據(jù)(殷志遠(yuǎn)等,2020);由原始?xì)庀髷?shù)據(jù)經(jīng)過處理加工產(chǎn)生的氣象服務(wù)類產(chǎn)品數(shù)據(jù);以及各個(gè)業(yè)務(wù)系統(tǒng)的運(yùn)行日志數(shù)據(jù)等?;ヂ?lián)網(wǎng)大數(shù)據(jù)包括互聯(lián)網(wǎng)上所有與氣象有關(guān)的數(shù)據(jù),可以是歷史氣象信息,或者搜索引擎對氣象相關(guān)的分析數(shù)據(jù),以及所有可供氣象部門業(yè)務(wù)工作應(yīng)用的數(shù)據(jù)等(徐亮亮,2021)。截止2021 年12 月,湖北省存有的各類氣象數(shù)據(jù)總量約7 PB,且近年來氣象及相關(guān)數(shù)據(jù)增長明顯加速,2020 年以來各類數(shù)據(jù)增加超過109 TB,其日增量由2015年的約200 GB提高到2021年的約400 GB。
氣象發(fā)達(dá)國家的大數(shù)據(jù)進(jìn)程啟示我們,要推動(dòng)以大數(shù)據(jù)為基礎(chǔ)的創(chuàng)造性服務(wù),就必須大力發(fā)展基于行業(yè)數(shù)據(jù)平臺(tái)的專業(yè)服務(wù)、基于統(tǒng)計(jì)數(shù)據(jù)挖掘的分析服務(wù)、基于大數(shù)據(jù)的民生服務(wù)、管理服務(wù)以及基于行業(yè)或價(jià)值模塊細(xì)分的服務(wù),通過對自然災(zāi)害歷史信息和實(shí)時(shí)天氣信息的挖掘,提高對自然災(zāi)害的安全防范意識(shí)和應(yīng)急處理能力。以美國國家海洋大氣局(NOAA)發(fā)起的大數(shù)據(jù)項(xiàng)目(BDP,Big Data Project)為例,通過與互聯(lián)網(wǎng)云商(亞馬遜、微軟、谷歌和IBM等公司)合作,來提升資源存儲(chǔ)、數(shù)據(jù)分析和高性能計(jì)算能力,構(gòu)建數(shù)據(jù)聯(lián)盟(Data Alliances),面向公眾開放海量大氣海洋數(shù)據(jù),通過數(shù)據(jù)的利用來促進(jìn)氣象技術(shù)和社會(huì)經(jīng)濟(jì)發(fā)展。
針對國內(nèi)氣象業(yè)務(wù)現(xiàn)狀和未來發(fā)展趨勢,2017年12 月,國家氣象信息中心提出構(gòu)建“天擎”系統(tǒng)?!疤烨妗毕到y(tǒng)是一種以“云+端”為設(shè)計(jì)思路,實(shí)現(xiàn)“數(shù)算一體”的氣象綜合業(yè)務(wù)支撐平臺(tái),這一平臺(tái)改變了過去傳統(tǒng)煙囪式信息系統(tǒng)架構(gòu)方式,各業(yè)務(wù)系統(tǒng)的輸入輸出數(shù)據(jù)均在“天擎”中進(jìn)行統(tǒng)一集約化管理,使包括機(jī)器學(xué)習(xí)、人工智能在內(nèi)的多類數(shù)據(jù)加工算法可以更為高效的應(yīng)用于氣象大數(shù)據(jù)中(夏正龍等,2021;徐亮亮,2021)。隨著信息技術(shù)的快速發(fā)展,以往以虛擬機(jī)為最小單位的算力資源分配模式,現(xiàn)在來看,存在資源利用率低、軟件環(huán)境不一致和應(yīng)用部署、運(yùn)維效率低等問題,已無法滿足氣象大數(shù)據(jù)云平臺(tái)計(jì)算業(yè)務(wù)場景需求,一種新的技術(shù)應(yīng)運(yùn)而生,那就是容器技術(shù)。不同于虛擬機(jī)技術(shù),容器技術(shù)通過打包應(yīng)用程序的所有依賴,實(shí)現(xiàn)應(yīng)用程序的快速部署和運(yùn)行,開發(fā)、測試和生產(chǎn)環(huán)境完全一致,用戶再也不用去定位因環(huán)境差異導(dǎo)致的各種異常問題,大大提高了生產(chǎn)效率。此外,容器技術(shù)還有跨平臺(tái)、可移植的特性,對于開發(fā)者和系統(tǒng)管理員來說簡單易用,容器技術(shù)直接解決的問題,就是目前云計(jì)算架構(gòu)遇到的問題。
容器具有更小顆粒度的算力分配、更輕量和快捷的部署方式、靈活的任務(wù)調(diào)度等特點(diǎn),近年來,以Docker 為代表的容器技術(shù)被愈來愈廣泛的應(yīng)用在云計(jì)算中。Docker 在應(yīng)用程序的開發(fā)、發(fā)布和部署上具有十分明顯的優(yōu)勢,由于其簡單、便捷、實(shí)用的特點(diǎn),國內(nèi)外知名的公司已經(jīng)開始大規(guī)模的使用這一技術(shù)(徐蘊(yùn)琪等,2021;Amit et al.,2022;Ren,2022)。但是,由于Docker 本身只具備基本的容器管理功能,如:鏡像的制作、下載和上傳、容器生命周期的管理等(武志學(xué),2017),在大規(guī)模的容器技術(shù)運(yùn)用中,需要一種容器集群管理系統(tǒng)來統(tǒng)一管理分布在集群中的各個(gè)容器,從而實(shí)現(xiàn)容器的編排、自動(dòng)化部署、任務(wù)調(diào)度、資源分配和服務(wù)發(fā)現(xiàn)等功能。因此,業(yè)界產(chǎn)生了大量針對容器的管理系統(tǒng),例如Google 的Kubernetes、Docker 的Swarm 和Mesos 發(fā)布的Marathon 等(徐珉,2017)。以Docker 容器技術(shù)為核心的第三方容器云平臺(tái)正在日益廣泛的被業(yè)界所應(yīng)用,Kubernetes(也稱為k8s)是基于Docker 容器技術(shù)的一種容器集群管理系統(tǒng),其為用戶提供了一個(gè)容器化應(yīng)用的整體解決方案,具備強(qiáng)大的容器編排能力,遵循微服務(wù)架構(gòu)理論,并且開放開源(杜軍,2016)。正因?yàn)镵ubernetes 具有這些特征,其從出現(xiàn)之初便受到業(yè)界的廣泛關(guān)注,現(xiàn)今Kubernetes已成為Docker 生態(tài)圈最流行的開源容器集群調(diào)度系統(tǒng)(肖斐,2010;孫大為等,2014;齊磊等,2017)。
Docker容器技術(shù)是氣象大數(shù)據(jù)云平臺(tái)實(shí)現(xiàn)“數(shù)算一體”功能所采用的關(guān)鍵技術(shù)之一,隨著業(yè)務(wù)化進(jìn)程的不斷推進(jìn),越來越多的算法將實(shí)現(xiàn)容器化部署,如何高效、便捷的管理這些容器,使之穩(wěn)定、高效的發(fā)揮業(yè)務(wù)支撐作用,已成為新的難題。為了解決這一難題,湖北省氣象局基于Kubernetes開源框架,結(jié)合氣象大數(shù)據(jù)云平臺(tái)業(yè)務(wù)實(shí)際需求,設(shè)計(jì)并構(gòu)建了一套面向容器的算力資源優(yōu)化管理系統(tǒng),該系統(tǒng)從多個(gè)方面促進(jìn)了容器技術(shù)在氣象大數(shù)據(jù)云平臺(tái)中的應(yīng)用。
算力資源優(yōu)化管理系統(tǒng)包括一種容器平臺(tái)調(diào)度子系統(tǒng),該子系統(tǒng)以“天擎”SOD為原始輸入數(shù)據(jù)源和返回產(chǎn)品存儲(chǔ)、共享中心,通過賬戶創(chuàng)建、資源授權(quán)、鏡像制作、算法注冊、算法加載、任務(wù)定義、任務(wù)啟動(dòng)、任務(wù)日志查看等多項(xiàng)功能,實(shí)現(xiàn)容器的串聯(lián)與調(diào)度。此外,該系統(tǒng)還設(shè)計(jì)并構(gòu)建了一種基于Kubernetes 的容器管理子系統(tǒng),能夠?qū)绶?wù)器的多容器進(jìn)行管理,實(shí)現(xiàn)負(fù)載均衡、存儲(chǔ)編排、自動(dòng)部署和回滾等功能。
算力資源優(yōu)化管理系統(tǒng)框架圖如圖1 所示,主要由加工容器調(diào)度子系統(tǒng)(以下簡稱調(diào)度子系統(tǒng))和容器平臺(tái)管理子系統(tǒng)(以下簡稱管理子系統(tǒng))兩部分組成,兩者相輔相成,缺一不可。一方面,調(diào)度子系統(tǒng)以“天擎”SOD作為數(shù)據(jù)源輸入,通過服務(wù)接口與“天擎”SOD進(jìn)行數(shù)據(jù)交換,獲取計(jì)算所需原始數(shù)據(jù),并將加工計(jì)算后的產(chǎn)品輸出給“天擎”接口實(shí)現(xiàn)產(chǎn)品共享;另一方面,調(diào)度子系統(tǒng)在用戶和容器之間搭建了橋梁,用戶通過調(diào)度子系統(tǒng)提供的賬戶創(chuàng)建、資源授權(quán)、鏡像制作、算法注冊、算法加載、任務(wù)定義、任務(wù)啟動(dòng)、任務(wù)日志查看等功能,可以輕松的完成目標(biāo)算法的部署和計(jì)算結(jié)果的獲得,而不必關(guān)心容器實(shí)現(xiàn)的具體細(xì)節(jié)。
圖1 算力資源管理系統(tǒng)框架圖Fig.1 Computing resource management system framework
從邏輯層面看,相比于調(diào)度子系統(tǒng),管理子系統(tǒng)處于較底層位置。管理子系統(tǒng)基于Kubernetes容器編排引擎,一方面,針對計(jì)算節(jié)點(diǎn)群,開展節(jié)點(diǎn)資源監(jiān)控,根據(jù)節(jié)點(diǎn)狀態(tài)和用戶對容器的需求,完成容器化應(yīng)用自動(dòng)化部署、擴(kuò)縮和管理;另一方面,接收調(diào)度子系統(tǒng)算法加載和運(yùn)行請求,通過節(jié)點(diǎn)預(yù)選、節(jié)點(diǎn)優(yōu)選打分、算法倉庫創(chuàng)建等功能,實(shí)現(xiàn)容器的快速調(diào)度和調(diào)度結(jié)果反饋。
基于B/S(Browser/Server,即瀏覽器/服務(wù)器)架構(gòu)實(shí)現(xiàn)的算力資源優(yōu)化管理系統(tǒng)主要包括數(shù)據(jù)縱覽、環(huán)境資源、鏡像倉儲(chǔ)、應(yīng)用服務(wù)和用戶中心等功能模塊,每個(gè)功能模塊又包含若干子功能模塊。數(shù)據(jù)縱覽直觀反映應(yīng)用、應(yīng)用CPU 和內(nèi)存使用量、實(shí)例、系統(tǒng)狀態(tài)、鏡像、系統(tǒng)日志等基本概況;環(huán)境資源包括環(huán)境管理、主機(jī)管理、容器管理和存儲(chǔ)卷,分別用于實(shí)現(xiàn)Kubernetes環(huán)境、容器宿主主機(jī)、容器和存儲(chǔ)的管理;鏡像倉庫實(shí)現(xiàn)倉庫和鏡像的導(dǎo)入、創(chuàng)建和編輯等功能;應(yīng)用服務(wù)針對各類應(yīng)用實(shí)現(xiàn)應(yīng)用實(shí)例的新增與編輯、編排和基礎(chǔ)信息配置管理;用戶中心實(shí)現(xiàn)用戶角色、權(quán)限的統(tǒng)一管理。算力資源優(yōu)化管理系統(tǒng)針對容器提供了一站式的系統(tǒng)維護(hù)與可視化工具,大大方便了用戶對容器的使用和技術(shù)管理人員對算法調(diào)度與容器平臺(tái)的運(yùn)維。
調(diào)度子系統(tǒng)包括賬戶創(chuàng)建、資源授權(quán)、鏡像制作、算法注冊、算法加載、任務(wù)定義、任務(wù)啟動(dòng)、任務(wù)日志收集等功能。主要業(yè)務(wù)邏輯如下:
調(diào)度子系統(tǒng)授權(quán)從“天擎”系統(tǒng)接入的用戶,并將用戶相關(guān)信息同步至容器平臺(tái);算法管理員通過調(diào)度子系統(tǒng)向用戶授權(quán)計(jì)算資源和存儲(chǔ)資源;用戶在得到授權(quán)后,可以上傳算法鏡像并填寫相應(yīng)的元數(shù)據(jù)信息;調(diào)度子系統(tǒng)在審核鏡像的安全性與完整性后,將鏡像上傳至容器平臺(tái)并授權(quán)用戶相應(yīng)的數(shù)據(jù)訪問權(quán)限。
用戶通過調(diào)度子系統(tǒng)的鏡像倉庫,選取鏡像并填寫算法執(zhí)行目錄,選擇存儲(chǔ)掛載目錄,將鏡像加載至計(jì)算節(jié)點(diǎn),完成在調(diào)度平臺(tái)上的算法注冊與加載;此后,用戶可以在調(diào)度平臺(tái)上通過任務(wù)參數(shù)的設(shè)定實(shí)現(xiàn)任務(wù)的觸發(fā)。一般的任務(wù)觸發(fā)方式分為四種:DI 觸發(fā)、順序觸發(fā)、定時(shí)觸發(fā)與人工觸發(fā)。
任務(wù)被觸發(fā)后,調(diào)度子系統(tǒng)將在容器平臺(tái)中創(chuàng)建容器,執(zhí)行任務(wù)并實(shí)時(shí)監(jiān)控任務(wù)執(zhí)行期間的容器使用情況,若執(zhí)行超時(shí)或資源不足,任務(wù)將被加入執(zhí)行隊(duì)列中;任務(wù)執(zhí)行成功后,將發(fā)送MQ消息通知管理子系統(tǒng)將容器銷毀。這一步中,容器平臺(tái)將調(diào)用Kubernetes 的api 接口(即應(yīng)用程序接口)清除已執(zhí)行完成的算法容器,并反饋刪除結(jié)果。
管理子系統(tǒng)基于Kubernetes 容器編排引擎,其調(diào)度器的執(zhí)行流程如圖2 所示。某個(gè)算法觸發(fā)調(diào)度后,系統(tǒng)將算法配置的CPU、內(nèi)存與可調(diào)度節(jié)點(diǎn)上可分配資源進(jìn)行對比,若資源充足,則進(jìn)行算法資源配置文件拼裝、資源部署腳本下發(fā)、節(jié)點(diǎn)預(yù)選、節(jié)點(diǎn)優(yōu)選等一系列調(diào)度動(dòng)作,最終獲取算法運(yùn)行結(jié)果;反之,由于可調(diào)度節(jié)點(diǎn)上可分配的資源無法滿足配置的算法資源需求,調(diào)度無法成功,則調(diào)度結(jié)束,后期可以通過增加資源或縮減算法資源配置等方式達(dá)到成功調(diào)度的目的。
圖2 Kubernetes的調(diào)度執(zhí)行流程Fig.2 Scheduling execution process of Kubernetes
在管理子系統(tǒng)中,將創(chuàng)建和管理的最小的可部署的計(jì)算單元稱為Pod。這些Pod 是一個(gè)或多個(gè)容器,這些容器共享存儲(chǔ)、網(wǎng)絡(luò)、以及怎樣運(yùn)行這些容器的聲明。Pod 中的內(nèi)容總是并置的并且一同調(diào)度,在共享的上下文中運(yùn)行。圖2 中,管理子系統(tǒng)給一個(gè)Pod做調(diào)度選擇,主要包含兩個(gè)步驟:預(yù)選與優(yōu)選。
預(yù)選階段,調(diào)度器使用節(jié)點(diǎn)預(yù)選策略將所有滿足Pod 調(diào)度需求的節(jié)點(diǎn)選出來。例如,使用某種節(jié)點(diǎn)預(yù)選策略檢查候選節(jié)點(diǎn)的可用資源,包括CPU、內(nèi)存等能否滿足Pod的資源請求,得出節(jié)點(diǎn)列表,節(jié)點(diǎn)列表包含了所有可調(diào)度節(jié)點(diǎn);通常情況下,節(jié)點(diǎn)列表包含不止一個(gè)節(jié)點(diǎn)。若節(jié)點(diǎn)列表為空,則代表該P(yáng)od 不可調(diào)度。常用的節(jié)點(diǎn)預(yù)選策略包括基礎(chǔ)調(diào)度、volume 相關(guān)、宿主機(jī)相關(guān)、Pod相關(guān)等策略。
優(yōu)選階段,調(diào)度器使用節(jié)點(diǎn)優(yōu)選策略為Pod 從預(yù)選階段得到的節(jié)點(diǎn)列表中選取一個(gè)最合適的節(jié)點(diǎn),并將Pod 調(diào)度到該節(jié)點(diǎn)上。根據(jù)啟用的節(jié)點(diǎn)優(yōu)選策略打分規(guī)則,調(diào)度器會(huì)給每一個(gè)可調(diào)度節(jié)點(diǎn)進(jìn)行打分,得分最高的節(jié)點(diǎn)成為最合適節(jié)點(diǎn)。若存在多個(gè)得分最高的節(jié)點(diǎn),調(diào)度器將從中隨機(jī)選取一個(gè)。節(jié)點(diǎn)的優(yōu)選策略包括:選擇空閑資源最多的宿主機(jī)、選擇資源分配最均衡的節(jié)點(diǎn)和偏向具有最多請求資源的節(jié)點(diǎn)等。
算力資源優(yōu)化管理系統(tǒng)的硬件部署示意圖如圖3所示。其中,系統(tǒng)部署在console 服務(wù)器上,與“天擎”系統(tǒng)中的Xugu集群(即虛谷數(shù)據(jù)庫集群)對接,并對其它節(jié)點(diǎn)進(jìn)行管理。Xugu 集群是“天擎”系統(tǒng)向用戶提供的定制化、高性能、高可靠、易用便捷的存儲(chǔ)體系,用于存儲(chǔ)應(yīng)用系統(tǒng)的元數(shù)據(jù)信息和應(yīng)用中間結(jié)果。
圖3 硬件部署示意圖Fig.3 Hardware deployment diagram
為保障系統(tǒng)的正常運(yùn)行,并實(shí)現(xiàn)系統(tǒng)的故障檢測與定位,設(shè)計(jì)了鏡像倉庫。鏡像倉庫的高可用實(shí)現(xiàn)方案如圖4 所示。鏡像倉庫使用NAS(即網(wǎng)絡(luò)附屬存儲(chǔ))作為共享存儲(chǔ),多個(gè)鏡像倉庫指向同一個(gè)NAS 目錄,通過負(fù)載均衡實(shí)現(xiàn)高可用。倉庫中的鏡像文件每天定時(shí)自動(dòng)全量備份,接口網(wǎng)關(guān)做加權(quán)輪詢負(fù)載均衡。
圖4 鏡像倉庫的高可用實(shí)現(xiàn)方案Fig.4 Scheme of high availability implementation of mirror repository
系統(tǒng)中的核心組件均進(jìn)行了高可用設(shè)計(jì),表1 給出了核心組件的高可用模式和實(shí)現(xiàn)方式。Xugu 數(shù)據(jù)庫采用集群模式實(shí)現(xiàn)數(shù)據(jù)高可用;鏡像倉庫存儲(chǔ)在NAS(NAS 數(shù)據(jù)高可用),鏡像倉庫01 和鏡像倉庫02 指向同一個(gè)NAS目錄,接口網(wǎng)關(guān)做IP_hash負(fù)載均衡,實(shí)現(xiàn)鏡像倉庫的高可用;Master Node采用了Leader Election(即主從選舉)方式實(shí)現(xiàn)高可用;容器云平臺(tái)控制臺(tái)和后臺(tái)分別部署兩個(gè)Paas-web、Paas-server,接口網(wǎng)關(guān)做輪詢負(fù)載均衡實(shí)現(xiàn)服務(wù)的高可用。
表1 核心組件的高可用模式和實(shí)現(xiàn)方式Table 1 High availability mode and implementation of core components.
算力資源優(yōu)化管理系統(tǒng)通過多節(jié)點(diǎn)均衡調(diào)度、算法資源精細(xì)化匹配、容器運(yùn)行資源隔離、算法鏡像存儲(chǔ)故障恢復(fù)、容器指標(biāo)和算法運(yùn)行故障監(jiān)控等關(guān)鍵技術(shù),支撐用戶在氣象大數(shù)據(jù)算法業(yè)務(wù)上的需求。
當(dāng)算法調(diào)度計(jì)算節(jié)點(diǎn)為多節(jié)點(diǎn),在調(diào)度過程中,由于一些原因,會(huì)出現(xiàn)調(diào)度不均衡的問題。例如:節(jié)點(diǎn)故障、新節(jié)點(diǎn)被加到集群中、節(jié)點(diǎn)資源利用不足等,這些問題會(huì)導(dǎo)致Pod 在調(diào)度過程中分配不均,例如會(huì)造成節(jié)點(diǎn)負(fù)載過高,引發(fā)Pod觸發(fā)OOM(Out of memory,即內(nèi)存不足)等操作,影響服務(wù)的正常使用。為應(yīng)對這些情況,本系統(tǒng)采用多節(jié)點(diǎn)均衡調(diào)度方法,在部分計(jì)算節(jié)點(diǎn)故障時(shí),容器算法可自動(dòng)檢測節(jié)點(diǎn)狀態(tài),仍可正常進(jìn)行調(diào)度,保障算法調(diào)度的可靠性。另外,如2.2節(jié)所述,系統(tǒng)還采用節(jié)點(diǎn)負(fù)載均衡調(diào)度策略,進(jìn)一步使計(jì)算節(jié)點(diǎn)資源得到均衡使用。
在Kubernetes 與Docker 默認(rèn)的設(shè)置中,容器內(nèi)單個(gè)算法執(zhí)行將會(huì)占用容器設(shè)置的所有資源,造成資源與算力的冗余。為解決這一問題,管理子系統(tǒng)會(huì)根據(jù)用戶設(shè)置的資源進(jìn)行容器創(chuàng)建,并進(jìn)行資源限制以精確匹配算法運(yùn)行時(shí)所需資源。資源限制是通過Pod中容器屬性的resources 字段進(jìn)行設(shè)置的,它是Kubernetes 提供的Resource Requirements 類型的api 對象。管理子系統(tǒng)采用resources 字段下的requests 和limits兩種限制類型對資源進(jìn)行控制。所謂requests,即資源需求,代表了資源下限,例如,運(yùn)行Pod 的節(jié)點(diǎn)必須滿足運(yùn)行Pod的最基本需求才能運(yùn)行Pod;所謂limits,即資源限額,代表了資源的上限,例如,運(yùn)行Pod期間,可能內(nèi)存使用量會(huì)增加,那最多能使用多少內(nèi)存,這就是資源限額。當(dāng)集群資源不足時(shí),Kubernetes 會(huì)根據(jù)Pod標(biāo)記的QoS(Quality of Service,即服務(wù)質(zhì)量保證)類別做剔除決策,騰出空閑資源。QoS 優(yōu)先級(jí)從低到高分為最大努力型(Best-Effort)、突發(fā)流量型(Burstable)和保證型(Guaranteed)三種。在系統(tǒng)臨近內(nèi)存耗盡情況下,最大努力型Pods 會(huì)最先被結(jié)束掉;當(dāng)沒有最大努力型Pods可以被結(jié)束掉時(shí),突發(fā)流量型Pods會(huì)被結(jié)束掉;當(dāng)沒有最大努力型和突發(fā)流量型Pods 可以被kill時(shí),保證型Pods才會(huì)被結(jié)束掉。因此,為更好的提高資源利用率,重要業(yè)務(wù)服務(wù)設(shè)置為保證型,其它服務(wù)根據(jù)重要程度設(shè)置為最大努力型或突發(fā)流量型。
在原始Kubernetes 與Docker 中,容器內(nèi)有多個(gè)算法同時(shí)運(yùn)行時(shí),算法間會(huì)相互影響。例如,當(dāng)某個(gè)算法運(yùn)行消耗資源較大時(shí),會(huì)導(dǎo)致其他算法運(yùn)行資源不足,影響算法執(zhí)行結(jié)果。為解決這一問題,管理子系統(tǒng)采用了一種“隨調(diào)隨起”的管理策略,即:在每次執(zhí)行都會(huì)新建一個(gè)獨(dú)立的容器,容器與容器之間運(yùn)行環(huán)境及資源隔離,從而提升算法運(yùn)行的穩(wěn)定性。
為保障用戶的信息和算法存儲(chǔ)安全,調(diào)度子系統(tǒng)為鏡像倉庫配置了高可用及備份機(jī)制。鏡像倉庫的高可用通過部署多節(jié)點(diǎn)負(fù)載均衡實(shí)現(xiàn),當(dāng)某一節(jié)點(diǎn)鏡像倉庫服務(wù)故障時(shí),會(huì)自動(dòng)切換至正常鏡像倉庫,不影響服務(wù)正常使用;鏡像倉庫使用全量周備份、增量日備份的備份機(jī)制,并定時(shí)清理30 d以上的“僵尸”鏡像數(shù)據(jù)。鏡像倉庫的高可用和備份機(jī)制,可以保證鏡像倉庫及算法鏡像文件存儲(chǔ)故障或誤操作時(shí),可以及時(shí)進(jìn)行恢復(fù),挽回用戶的損失。
為解決監(jiān)控容器運(yùn)行狀況,引入了Prometheus 容器監(jiān)控技術(shù),它是一套開源的新一代云原生監(jiān)控告警框架。系統(tǒng)采用了兩個(gè)Prometheus server 監(jiān)控同時(shí)一目標(biāo)的高可用實(shí)現(xiàn)方案,通過Prometheus 監(jiān)控端點(diǎn)采集容器性能指標(biāo)數(shù)據(jù),并將監(jiān)控端點(diǎn)通過Http服務(wù)的形式暴露給Prometheus 主機(jī),Prometheus 主機(jī)通過訪問監(jiān)控端點(diǎn),便可獲取采集到的數(shù)據(jù)。在算法運(yùn)行故障監(jiān)控方面,本系統(tǒng)新增算法輸出日志下載能力,提供容器化算法及服務(wù)的資源監(jiān)視能力,通過容器平臺(tái)監(jiān)控組件可查詢?nèi)萜髻Y源使用情況,包含CPU、內(nèi)存、網(wǎng)絡(luò)等,算法故障錯(cuò)誤日志查詢功能,算法在容器內(nèi)執(zhí)行過程出現(xiàn)錯(cuò)誤的日志進(jìn)行查詢,快速定位問題,并解決故障。此外,系統(tǒng)實(shí)現(xiàn)了容器、算法故障監(jiān)控與氣象綜合業(yè)務(wù)實(shí)時(shí)監(jiān)控系統(tǒng)“天鏡.湖北”的對接,進(jìn)一步提升了容器、算法故障的及時(shí)發(fā)現(xiàn)與快速處理能力。
本文從氣象大數(shù)據(jù)算力資源優(yōu)化管理系統(tǒng)的建設(shè)需求、總體架構(gòu)以及實(shí)現(xiàn)方式等問題出發(fā),探討了該系統(tǒng)設(shè)計(jì)的思路和若干關(guān)鍵技術(shù),得出以下結(jié)論:
(1)基于B/S 架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)了一套面向容器平臺(tái)的氣象大數(shù)據(jù)算力資源優(yōu)化管理系統(tǒng),該系統(tǒng)包括加工容器調(diào)度和容器平臺(tái)管理兩個(gè)子系統(tǒng)。系統(tǒng)以氣象大數(shù)據(jù)云平臺(tái)“天擎”為數(shù)據(jù)中臺(tái),基于Kubernetes的容器編排引擎,通過兩個(gè)子系統(tǒng)的合理調(diào)度和配置,搭建了用戶使用容器的橋梁,使容器高效、便捷地為各類氣象大數(shù)據(jù)的算法產(chǎn)品加工與挖掘分析計(jì)算服務(wù)。
(2)調(diào)度子系統(tǒng)包括賬戶創(chuàng)建、資源授權(quán)、鏡像制作、算法注冊、算法加載、任務(wù)定義、任務(wù)啟動(dòng)、任務(wù)日志收集等功能。用戶可以在調(diào)度平臺(tái)上通過任務(wù)參數(shù)的設(shè)定實(shí)現(xiàn)任務(wù)的觸發(fā),其觸發(fā)方式靈活機(jī)動(dòng)。任務(wù)被觸發(fā)后,調(diào)度子系統(tǒng)在容器平臺(tái)中創(chuàng)建容器、執(zhí)行任務(wù)并實(shí)時(shí)監(jiān)控任務(wù)執(zhí)行期間容器的使用情況;管理子系統(tǒng)將算法配置的CPU、內(nèi)存與可調(diào)度節(jié)點(diǎn)上可分配資源進(jìn)行對比,并完成配置文件拼裝、資源部署腳本下發(fā)、節(jié)點(diǎn)預(yù)選優(yōu)選,最終獲取算法運(yùn)行結(jié)果。
(3)綜合運(yùn)用多節(jié)點(diǎn)均衡調(diào)度、算法資源精細(xì)化匹配、容器運(yùn)行資源隔離、算法鏡像存儲(chǔ)故障恢復(fù)、容器指標(biāo)和算法運(yùn)行故障監(jiān)控等關(guān)鍵技術(shù),有效提升了容器算力資源的調(diào)度能力、可靠性和利用率。自動(dòng)負(fù)載調(diào)度方式,支持多節(jié)點(diǎn)負(fù)載均衡調(diào)度,使服務(wù)器資源充分利用,保證算法調(diào)度高可用性;算法容器可進(jìn)行CPU、內(nèi)存限制,保證宿主機(jī)上的容器資源相互隔離,服務(wù)器資源合理使用,保障服務(wù)器穩(wěn)定可靠運(yùn)行;算法任務(wù)運(yùn)行完成后,相應(yīng)的容器會(huì)進(jìn)行回收,容器占用的資源也會(huì)進(jìn)行釋放,大大提升資源利用率。
該系統(tǒng)于2022 年1 月開始業(yè)務(wù)運(yùn)行,截止目前,累計(jì)實(shí)現(xiàn)多個(gè)類別、近百個(gè)算法的部署與調(diào)度的統(tǒng)一管理,為“天擎”系統(tǒng)的“云+端”業(yè)務(wù)發(fā)展規(guī)劃提供了一定的實(shí)踐基礎(chǔ)和有效助力。近年來,運(yùn)用大數(shù)據(jù)推動(dòng)經(jīng)濟(jì)發(fā)展、完善社會(huì)治理、提升政府服務(wù)和監(jiān)管能力正成為趨勢,大數(shù)據(jù)也成為氣象部門重塑競爭優(yōu)勢的新機(jī)遇?;凇疤烨妗毕到y(tǒng)進(jìn)行氣象大數(shù)據(jù)挖掘,將人工智能、知識(shí)圖譜與數(shù)字孿生等前沿業(yè)界技術(shù)與氣象大數(shù)據(jù)相結(jié)合,將會(huì)是氣象領(lǐng)域研究者進(jìn)一步的研究方向之一。后續(xù)將不斷改進(jìn)和完善面向容器平臺(tái)的氣象大數(shù)據(jù)算力資源優(yōu)化管理系統(tǒng),持續(xù)促進(jìn)氣象大數(shù)據(jù)和研究型業(yè)務(wù)的發(fā)展。