1. 程式人生 > >編寫shell指令碼一鍵啟動zookeeper叢集!!

編寫shell指令碼一鍵啟動zookeeper叢集!!

踩了一個多小時坑終於解決了:

這裡分享給大家,更主要的目的是記住這些坑,避免以後重複走!!!

首先,這裡採用ssh祕鑰方式進行叢集主機之間免密登入執行啟動命令

這裡簡單說下原理:

通過ssh去另外一臺機器執行命令,直接執行還不行,因為需要環境變數,而ssh登入之後不在同一個程序裡面,所以環境變數不共享

可以在登入之後先執行 source /src/profile初始化環境配置,這樣環境變數就有了,ssh登入預設不會執行初始化操作,

而從客戶端登入會執行初始化一系列命令,包括這個,這個不多說

步驟:

1 配置三臺(我用了三臺)主機之間ssh可以互相登入,  命令 ssh-keygen 生成祕鑰,然後去/root/.ssh/目錄下將生成的祕鑰

拷貝到其他兩個主機上面:

再將祕鑰 id_rsa.pub 追加到主機的auth這個檔案中,沒有可以vim建立一個

注意是在/root/.ssh/目錄下面,配置好之後,測試一下 直接用 ssh ip 看是否可以登入,能不用密碼直接登入就證明成功了!

然後就是編寫shell了,這裡直接執行ZkServer.sh start 肯定是不行的,日誌會報沒有java目錄,即沒有環境變數,所以可以

在執行之前執行環境變數初始化 source /etc/profile 就行了:

這個是我的!!

然後chomd 755 檔案就可以直接執行啟動了!

如果不成功,就得看日誌了,因為是ssh啟動,所以日誌在~目錄中,即 /root目錄,這裡我總結了幾點坑:

坑:重點來了

第一: 確保叢集之間通訊的埠開放,預設是2888,3888都必須開放,可以使用firewall-cmd --zone=public --add-port=2888/tcp --permanent 新增,然後重新載入

firewall使用教程:https://www.cnblogs.com/moxiaoan/p/5683743.html

第二: java安裝時候必須在環境變數配置JAVA_HOME,不能直接新增在$PATH後面,否則會報錯:

第三: 第一時間看日誌,然後查詢相關問題,這是解決問題最快的!然後其他常見錯誤在我之前寫的一篇部落格中有,這裡就不重複寫了!