當前位置:
首頁 > 最新 > 003-Ambari一鍵自動化腳本部署

003-Ambari一鍵自動化腳本部署

根據前兩篇 「Ambari大數據平台搭建利器(一)&(二)」, 我們已經完成大數據平台的搭建,但是我們發現安裝Ambari的步驟比較繁瑣,並且手動部署存在以下的劣勢:

1. 每個節點都要執行重複的命令,我們前兩篇測試的節點只有三個,如果生產環境有上百個節點,這個工作量是比較大的。

2. 如果是基於項目的平台,可能會有幾十甚至上百個客戶,給每個與客戶安裝一套數十個節點的平台是比較繁瑣的事。

3. 如果我們修改了源代碼,在測試環境中,很有可能要來回卸載,安裝,會花費很長的時間。

4. 人工操作會有一定的風險。

基於上述,我們打算寫一套腳本,主要是安裝Ambari server和agent,以及前期的環境檢查,準備,修復,卸載。

註:如果只是個人測試學習,或者基於雲端部署一套大數據平台,可以手動操作,這種場景是一次性的操作,並且之後很少再重新部署。

本篇主要是基於前兩篇的基礎上做的,因此需要對前兩篇內容需要了解一下。

整體流程

環境檢查:檢查服務安裝的每個節點是否滿足安裝Ambari的條件,如JDK,OpenSSL,Ambari Server需要檢查PostgreSQL等等。

環境修復:如果某些節點或者所有節點不滿足安裝條件,則需要通過修復來滿足安裝條件,如JDK沒有安裝,則需要安裝JDK,並且設置環境變數。

安裝Ambari:如果條件滿足,則在指定的節點安裝Ambari Server以及在每個節點安裝Ambari agent。

卸載Ambari:卸載Ambari Server及Ambari agent。

技術選型

編程語言:Python

由於要在每個節點執行相同的命令(Server和Agent有區別),所以要選一種封裝了SSH的庫,我們選擇Python中的Fabric。

腳本是運行在安裝Ambari Server的節點上的,為了不影響原系統中的Python,我們需要在腳本中搭建Python虛擬環境。

技術實現

配置文件

配置文件主要配置了程序中需要讀取的靜態屬性。

以上就是配置文件內容及說明。

Python虛擬環境

思路很簡單,其實現就是將系統中的Python重新拷貝一份到指定目錄下,然後將Fabric及依賴包進行安裝,每次運行時都會去檢查配置的虛擬環境路徑是否存在,如果存在則直接使用,不存在則創建虛擬環境。

環境檢查

我們在該腳本中環境檢查項主要包括:JDK,Python,OpenSSL,Httpd,最大文件數,NTP,防火牆,SELinux,SSH,主機名,HOSTS文件,PGSQL,PackageKit。每項檢查失敗都有對應的修復。

我們以檢查防火牆是否關閉為例,來說明環境檢查的過程。

check_firewall_status()方法是整個檢查的核心部分。

1. 在每個節點執行檢查防火牆狀態的命令:firewall-cmd status (不同的操作系統,檢查的命令略微有區別)

2. 判斷返回的內容,如果是 "not running" 則表示防火牆已處於關閉的狀態。如果返回值為 「command not found」 則表示未安裝防火牆指令(一般這種情況比較少,因為系統默認會有安裝)。

3. 如果2中的條件都沒有滿足,則防火牆就處於 running 狀態,將該信息寫入到臨時文件中,在後續修復環境時需要讀取改文件。

checkfirewallstatus()方法是利用Fabric的特性,在指定節點執行該方法。

@parallel :表示並行執行

@Roles("remote") : 表示在指定的角色上執行該方法,其中remote我們配置的所有機器的IP。

上述方法就表示在remote角色中配置的節點上並行執行該方法。

環境修復

我們還是接上面的關閉防火牆來說明環境修復的過程

首先判斷firewall是否在臨時文件中,如果存在則執行修復方法。

修復的過程也就是執行關閉防火牆的過程。

刪除Ambari 及安裝組件

刪除的場景

1. 徹底刪除Ambari及全部組件

2. 安裝失敗,某些節點安裝失敗,這時候需要刪除安裝失敗的,保留安裝成功的,我們在這稱為回滾(roll-back)

刪除Ambari Server

回滾刪除,只刪除server,已安裝成功的節點不進行刪除

刪除組件及用戶信息

整體運行演示截圖:

1. 環境檢查,發現防火牆未關閉

2. 修復環境

3.重新檢查

4.安裝Ambari

5. 安裝過程

6. 安裝完成

7. 訪問http://bigdata001:8080 進行驗證,安裝組件

8. 卸載Ambari Server和Agent

以上就是Ambari一鍵自動化部署腳本的思路和演示,下一篇我們將對Ambari的源代碼結構進行說明。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 BearData 的精彩文章:

TAG:BearData |