1. 程式人生 > >zookeeper自動化指令碼---一鍵啟動

zookeeper自動化指令碼---一鍵啟動

交流QQ: 824203453

基於zookeeper 3.4.6版本

因為zookeeper本身沒有批量啟動指令碼,所以,每次都需要一臺機器一臺機器的啟動。非常麻煩。

這裡提供一個zookeeper的叢集批量啟動指令碼。

#!/bin/bash

ZOOKEEPER_HOME=/root/apps/zookeeper-3.4.6

if [ $ZOOKEEPER_HOME != ""  ]; then
        ZOOCFG=$ZOOKEEPER_HOME/conf/zoo.cfg
        SLAVES=$(cat "$ZOOCFG" | sed '/^server/!d;s/^.*=//;s/:.*$//g;/^$/d')
        for s in $SLAVES
                do
                        echo "INFO:starting zookeeper on ${s}"
                        ssh $s "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh start"
                        if [ $? != 0 ];
                                then
                                echo "Can not starting zookeeper server on host $s}"
                                exit 1
                        fi
                done
fi

思路:

設定zookeeper安裝目錄

獲取安裝目錄下的zoo.cfg配置檔案(該檔案中有所有的zookeeper節點)

獲取該配置檔案中的所有的zookeeper節點。

迴圈遍歷,利用ssh命令啟動每臺機器上的zookeeper。

注意事項:

1,本次測試的3臺機器主機名分別是hdp-01,hdp-02和 hdp-03。 然後hdp-01到hdp-02和hdp-01到hdp-03的單向免密登入是通的。否則就需要先進行免密登入配置。(因為沒有全部配通免密登入,所有啟動命令只能在hdp-01上執行即可,如果想在任意一臺機器上都能執行,那麼就需要配置所有的免密登入)

2,在ssh 遠端啟動指令碼中,先執行了 source /etc/profile,重新載入了系統環境變數。目的是為了把jdk的命令載入到當前系統環境中,否則報錯。

報錯如下:

一鍵停止,只需要把start命令改成stop命令即可,獲取通過引數穿的具體的操作也是ok的。

交流QQ: 824203453