編寫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后面,否則會報錯:

第三: 第一時間看日志,然后查找相關問題,這是解決問題最快的!然后其他常見錯誤在我之前寫的一篇博客中有,這里就不重復寫了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM