本發(fā)明涉及計算機軟件應(yīng)用開發(fā)技術(shù)領(lǐng)域,特別涉及一種利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法。
背景技術(shù):
Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。幾乎沒有性能開銷,可以很容易地在機器和數(shù)據(jù)中心中運行。最重要的是,它們不依賴于任何語言、框架包括系統(tǒng)。
Dockerfile是由一系列命令和參數(shù)構(gòu)成的腳本,這些命令應(yīng)用于基礎(chǔ)鏡像并最終創(chuàng)建一個新的鏡像,它們簡化了從頭到尾的流程并極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接著各種方法、命令和參數(shù),其產(chǎn)出為一個新的可以用于創(chuàng)建容器的鏡像。
Ember.js是一個用于創(chuàng)建web應(yīng)用的JavaScript MVC框架,采用基于字符串的Handlebars模板,支持雙向綁定、觀察者模式、計算屬性(依賴其他屬性動態(tài)變化)、自動更新模板、路由控制、狀態(tài)機等。Ember使用自身擴展的類來創(chuàng)建Ember對象、數(shù)組、字符串、函數(shù),提供大量方法與屬性用于操作。Ember采用可嵌套的視圖層,使視圖變得有層次。
基于上述情況,同時為了解決大數(shù)據(jù)集群資源使用率高、安裝管理復(fù)雜,以及使用過程中參數(shù)調(diào)整繁瑣、性能監(jiān)控不便的缺點,減輕運維人員的工作量,快速高效地在生產(chǎn)環(huán)境下完成大數(shù)據(jù)集群的部署和管理工作。本發(fā)明設(shè)計了一種利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法。
技術(shù)實現(xiàn)要素:
本發(fā)明為了彌補現(xiàn)有技術(shù)的缺陷,提供了一種簡單高效的利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法。
本發(fā)明是通過如下技術(shù)方案實現(xiàn)的:
一種利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法,其特征在于:通過編寫Dockerfile文件構(gòu)建Hadoop大數(shù)據(jù)集群自動化部署相關(guān)的Docker鏡像,包括Server端鏡像和Agent端鏡像;利用Server端鏡像啟動一個Server容器,利用Agent端鏡像啟動多個Agent端,由Server端對多個Agent端進行統(tǒng)一管理,同時在Server容器中啟動Web應(yīng)用;建立一個由Server端、多Agent端和Web端組成的分布式架構(gòu),自動化啟動部署Hadoop相關(guān)大數(shù)據(jù)集群的服務(wù)。
所述Web端基于Ember JS框架,負責引導用戶進行大數(shù)據(jù)組件安裝,安裝完成后對集群、主機和組件進行可視化監(jiān)控,同時支持各個組件的啟停等操作與配置的調(diào)優(yōu);
所述Server端負責與Web端和Agent端進行交互,開放兩大類API,其中一類API為Web端提供監(jiān)控管理服務(wù),實現(xiàn)應(yīng)用的安裝部署與管理監(jiān)控可視化;另一類API用于與Agent端進行交互,分發(fā)任務(wù)到指定的Agent,同時接受Agent向Server發(fā)送心跳請求,實時監(jiān)控Agent的狀態(tài);
所述Agent端負責調(diào)用Python腳本進行應(yīng)用的自動化安裝以及主機狀態(tài)的監(jiān)控,同時支持主機數(shù)量的擴展,對Metrics進行封裝,實現(xiàn)對集群、主機和應(yīng)用的監(jiān)控,結(jié)合Grafana更好地實現(xiàn)監(jiān)控信息的可視化。
所述Web端引導用戶進行大數(shù)據(jù)組件安裝,包括添加主機、選擇應(yīng)用、主機分配、修改配置。
本發(fā)明的有益效果是:該利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法,通過Web頁面實現(xiàn)了集群的管理與配置調(diào)優(yōu),減少了運維人員的工作量,同時通過可視化監(jiān)控能夠直觀地獲取集群、主機和組件的運行狀態(tài),提高運維人員的工作效率,進而顯著提高了大數(shù)據(jù)集群部署的速度,簡化了部署流程,同時降低了硬件資源使用率。
附圖說明
附圖1為本發(fā)明利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法示意圖。
具體實施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖和實施例,對本發(fā)明進行詳細的說明。應(yīng)當說明的是,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
該利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法,通過編寫Dockerfile文件構(gòu)建Hadoop大數(shù)據(jù)集群自動化部署相關(guān)的Docker鏡像,包括Server端鏡像和Agent端鏡像;利用Server端鏡像啟動一個Server容器,利用Agent端鏡像啟動多個Agent端,由Server端對多個Agent端進行統(tǒng)一管理,同時在Server容器中啟動Web應(yīng)用;建立一個由Server端、多Agent端和Web端組成的分布式架構(gòu),自動化啟動部署Hadoop相關(guān)大數(shù)據(jù)集群的服務(wù)。
所述Web端基于Ember JS框架,負責引導用戶進行大數(shù)據(jù)組件安裝,安裝完成后對集群、主機和組件進行可視化監(jiān)控,同時支持各個組件的啟停等操作與配置的調(diào)優(yōu);
所述Server端負責與Web端和Agent端進行交互,開放兩大類API,其中一類API為Web端提供監(jiān)控管理服務(wù),實現(xiàn)應(yīng)用的安裝部署與管理監(jiān)控可視化;另一類API用于與Agent端進行交互,分發(fā)任務(wù)到指定的Agent,同時接受Agent向Server發(fā)送心跳請求,實時監(jiān)控Agent的狀態(tài);
所述Agent端負責調(diào)用Python腳本進行應(yīng)用的自動化安裝以及主機狀態(tài)的監(jiān)控,同時支持主機數(shù)量的擴展,對Metrics進行封裝,實現(xiàn)對集群、主機和應(yīng)用的監(jiān)控,結(jié)合Grafana更好地實現(xiàn)監(jiān)控信息的可視化。
所述Web端引導用戶進行大數(shù)據(jù)組件安裝,包括添加主機、選擇應(yīng)用、主機分配、修改配置。
該利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法,主要解決了以下問題:
(1)Hadoop大數(shù)據(jù)集群自動化部署相關(guān)Docker鏡像的制作方法;
(2)利用自定義Docker鏡像啟動的容器部署Hadoop相關(guān)大數(shù)據(jù)集群安裝復(fù)雜、配置繁瑣、管理不便的問題。
該利用Docker容器自動化部署與管理大數(shù)據(jù)集群的方法,完成了Hadoop相關(guān)大數(shù)據(jù)組件的安裝、配置、參加調(diào)整,將手動安裝、配置、管理全部實現(xiàn)自動化,提供了Web管理界面,便于可視化操作。具體來說,通過Web頁面實現(xiàn)了集群的管理與配置調(diào)優(yōu),減少了運維人員的工作量,同時通過可視化監(jiān)控能夠直觀地獲取集群、主機和組件的運行狀態(tài),提高運維人員的工作效率,進而顯著提高了大數(shù)據(jù)集群部署的速度,簡化了部署流程,同時降低了硬件資源使用率。