踩了一個多小時坑終於解決了:
這里分享給大家,更主要的目的是記住這些坑,避免以后重復走!!!
首先,這里采用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后面,否則會報錯:
第三: 第一時間看日志,然后查找相關問題,這是解決問題最快的!然后其他常見錯誤在我之前寫的一篇博客中有,這里就不重復寫了!