編寫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後面,否則會報錯:
第三: 第一時間看日誌,然後查詢相關問題,這是解決問題最快的!然後其他常見錯誤在我之前寫的一篇部落格中有,這裡就不重複寫了!