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