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