陳明俊,李 靖,翟中霞,祖國峰
(河南油田,河南 鄭州 450000)
云計(jì)算做為一種優(yōu)秀的IT服務(wù)新模式,能夠?qū)⒂?jì)算、存儲(chǔ)、服務(wù)、應(yīng)用等按需提供給用戶。其快速的資源供應(yīng)和釋放,不僅提高了資源利用率,而且極大地降低了企業(yè)運(yùn)維成本。Docker容器技術(shù)在一些大型企業(yè)的數(shù)據(jù)庫、大數(shù)據(jù)等云計(jì)算應(yīng)用方面已經(jīng)得到了應(yīng)用。
地震資料處理作為油田企業(yè)勘探的重要中間環(huán)節(jié),為油田勘探和滾動(dòng)開發(fā)提供基礎(chǔ)數(shù)據(jù)資料。在地震資料處理中軟硬件資源的分配使用和運(yùn)維方面,目前基本采用傳統(tǒng)方式:一是根據(jù)專業(yè)軟件使用需求,不同軟件和版本要求的操作系統(tǒng)及系統(tǒng)設(shè)置不同,以資源獨(dú)占的方式在計(jì)算機(jī)集群中安裝使用,使得計(jì)算資源的利用率較低;二是為滿足專業(yè)軟件對特定操作系統(tǒng)發(fā)行版本的要求,在新的硬件資源上安裝較低的系統(tǒng)內(nèi)核,影響了硬件性能的發(fā)揮。通過對docker容器云技術(shù)的研究,構(gòu)建地震資料處理專業(yè)軟件容器云環(huán)境,不僅可以提高計(jì)算機(jī)集群硬件資源的利用率,實(shí)現(xiàn)處理軟件的云化應(yīng)用及軟件部署的自動(dòng)編排,而且能顯著提升軟件運(yùn)行性能。
地震資料處理專業(yè)軟硬件的傳統(tǒng)應(yīng)用中,由于專業(yè)軟件對計(jì)算機(jī)的硬件結(jié)構(gòu)、操作系統(tǒng)有明確的限制,比如geovation2013處理軟件對操作系統(tǒng)的要求是:redhat linux5 or 6 (install all packages),同時(shí)在系統(tǒng)參數(shù)設(shè)置上有特定要求,因此在實(shí)際應(yīng)用中,一般一套計(jì)算機(jī)集群安裝一套處理軟件開展應(yīng)用,多套軟件配置多套計(jì)算機(jī)集群硬件系統(tǒng),常常運(yùn)用不同軟件的技術(shù)優(yōu)勢來解決科研生產(chǎn)中的實(shí)際問題。這樣就存在兩個(gè)問題,不同軟件的使用頻率不同會(huì)造成計(jì)算機(jī)系統(tǒng)忙閑不均,使得計(jì)算機(jī)集群硬件整體使用效率不高;一些新的計(jì)算機(jī)硬件安裝較低版本的系統(tǒng)內(nèi)核,影響了硬件性能的發(fā)揮。
Docker容器技術(shù)經(jīng)歷近幾年的高速發(fā)展已經(jīng)成為云計(jì)算的一種重要模式,與傳統(tǒng)虛擬機(jī)相比,容器性能更好,資源利用率更高。因此,能否通過構(gòu)建地震資料處理專業(yè)軟件容器云環(huán)境,隔離軟件運(yùn)行對物理機(jī)的直接依賴,來實(shí)現(xiàn)計(jì)算機(jī)集群硬件資源池的共享利用和軟件部署的自動(dòng)編排,同時(shí)在宿主機(jī)上安裝較高版本的系統(tǒng)內(nèi)核來提升對計(jì)算機(jī)硬件性能的應(yīng)用。
圖1 傳統(tǒng)軟件應(yīng)用模式移植到容器云平臺應(yīng)用模式思路圖
基于Docker、Kubernetes及相關(guān)的容器生態(tài)技術(shù),分別在Intel架構(gòu)和AMD架構(gòu)集群上,構(gòu)建高可用容器云平臺,為計(jì)算資源的共享和專業(yè)軟件的自動(dòng)編排奠定基礎(chǔ)。之后,根據(jù)地震資料處理專業(yè)軟件的具體需求,構(gòu)建具有特定發(fā)行版操作系統(tǒng)的專業(yè)軟件鏡像,編寫專業(yè)軟件多進(jìn)程啟動(dòng)和集群自動(dòng)化編排的執(zhí)行程序。實(shí)現(xiàn)地震資料處理專業(yè)軟件在容器云環(huán)境中的高效運(yùn)行。
1)搭建Cobbler集群裝機(jī)平臺,支持以網(wǎng)絡(luò)啟動(dòng)(PXE)的方式快速建立集群Linux系統(tǒng)環(huán)境,本實(shí)驗(yàn)針對生產(chǎn)環(huán)境以centos7.7mininal輕量級操作系統(tǒng)部署到所有宿主機(jī)(計(jì)算機(jī)集群)上。
2)部署Docker容器運(yùn)行環(huán)境,支持軟件以容器的方式運(yùn)行,為計(jì)算機(jī)集群硬件資源的共享利用和軟件運(yùn)行環(huán)境的完全隔離奠定基礎(chǔ)。
3)編寫Ansible自動(dòng)化部署程序,搭建Kubernetes開源容器自動(dòng)化運(yùn)維平臺,消除容器化應(yīng)用程序在部署、伸縮時(shí)涉及到的手動(dòng)操作;構(gòu)建純?nèi)龑拥腃alico數(shù)據(jù)中心網(wǎng)絡(luò),為Docker容器和裸機(jī)之間提供高效可控的通信。
4)針對不同專業(yè)軟件對操作系統(tǒng)的要求和依賴庫進(jìn)行配置、封裝,分別構(gòu)建RedHat Enterprise Linux 4.x、5.x及6.x容器鏡像,在此基礎(chǔ)上進(jìn)一步構(gòu)建支持多進(jìn)程啟動(dòng)的專業(yè)軟件容器鏡像。容器與虛擬機(jī)相比它們被設(shè)計(jì)成運(yùn)行單進(jìn)程,為較好地在容器中模擬一個(gè)完整的多進(jìn)程運(yùn)行環(huán)境,針對不同的專業(yè)軟件編寫具體的啟動(dòng)進(jìn)程,滿足專業(yè)軟件對特定操作系統(tǒng)發(fā)行版的要求。
5)編寫專業(yè)軟件容器自動(dòng)化部署程序,實(shí)現(xiàn)專業(yè)軟件容器的自動(dòng)編排。
通過容器化部署,將多套計(jì)算機(jī)集群資源做成計(jì)算資源池,我們可以做到在同一物理主機(jī)上同時(shí)運(yùn)行多套專業(yè)軟件,應(yīng)用k8s負(fù)載均衡技術(shù),顯著提升計(jì)算資源的利用率。
圖2 軟件容器云化應(yīng)用模擬圖
基于容器在操作系統(tǒng)層面的虛擬化能力,將低版本操作系統(tǒng)下安裝的專業(yè)軟件做成容器移植到高版本操作系統(tǒng)內(nèi)核中運(yùn)行,提高了計(jì)算機(jī)集群硬件的運(yùn)行性能。以某區(qū)塊三維數(shù)據(jù)分別在硬件配置相同的原有集群和容器集群上利用14個(gè)計(jì)算節(jié)點(diǎn),每節(jié)點(diǎn)16個(gè)核進(jìn)行tikim時(shí)間偏移測試。原有集群用時(shí)36446秒,容器集群用時(shí)28682秒,軟件運(yùn)行效率提升21.3%。
圖3 效果測試圖
通過將配置好的專業(yè)軟件及運(yùn)行環(huán)境構(gòu)建成標(biāo)準(zhǔn)容器,脫離了物理計(jì)算機(jī)的限制,實(shí)現(xiàn)了專業(yè)軟件在Kubernetes下的統(tǒng)一管理和快速部署,專業(yè)軟件的啟動(dòng)時(shí)間縮短到分鐘級,極大地減少了勘探開發(fā)專業(yè)軟件安裝、配置和部署的時(shí)間,同時(shí)可以做到不同專業(yè)軟件容器應(yīng)用數(shù)量的動(dòng)態(tài)縮放。這與之前動(dòng)輒需要數(shù)十小時(shí)才能重新部署一套專業(yè)軟件而言,大幅度地降低了集群系統(tǒng)運(yùn)維費(fèi)用,提高了系統(tǒng)運(yùn)維效率。
圖4 專業(yè)軟件容器快速部署模擬圖
基于Docker的層疊鏡像模型,利用Dockerfile機(jī)制將在用的一些有特色的老軟件(如:focus5.4,cgg4100,多道統(tǒng)計(jì)寬帶子波反褶積等),構(gòu)建為可獨(dú)立運(yùn)行的容器,使得這些軟件能夠不受物理環(huán)境和操作系統(tǒng)環(huán)境的束縛,從而達(dá)到延長軟件生命周期,保護(hù)在用軟件資產(chǎn)的目的。
基于開源容器云技術(shù),初步在地震資料處理中實(shí)現(xiàn)了專業(yè)軟件容器云的生產(chǎn)化部署,較好地解決了計(jì)算資源共享與專業(yè)軟件隔離、系統(tǒng)性能提升與軟件兼容等的矛盾,提高了系統(tǒng)的可靠性和資源的利用率,降低了系統(tǒng)運(yùn)維成本。