深坑!關於zookeeper報錯: [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel

關於啓動集羣后查看狀態時報錯:

[myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel

注意!!這個是個深坑!!!其表現在zookeeper集羣搭建完成後,我在三臺機器(你可能是其他數量)上啓動集羣可以啓動成功,但是查看狀態時報錯。具體就是not running啦。看到這個錯我打印了zookeeper.out的日誌。發現具體報錯如下:

我便在網上查了一些博客,網上總結的問題主要有兩點,我不排除你的問題是出在這兩個上,因此這裏我也列出來供大家參考。

1.防火牆沒關導致通信失敗,無法連接到其他節點上。如果你恰巧是這個問題,那很好解決,把每一臺服務器的防火牆關閉即可。

命令行:chkconfig iptables off (關閉防火牆)

    service iptables status(查看防火牆狀態)

或者直接 service iptables stop

然後把服務全部重啓即可。

2.配置文件問題

a. /zookeeper/conf/zoo.cfg文件配置問題

例如dataDir格式不對,或者沒有創建dataDir指定的文件等等,所以細心地檢查你的配置文件,至於這個文件的內容請大家自行百度。

b. dataDir指定的目錄下創建myid文件,然後再文件寫上你在zoo.cfg中該節點的對應server號,例如server.1,那麼myid中就寫1。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

如果你上面兩個地方都確信沒有問題,但是集羣還是起不了,那恭喜你和我一樣中獎了!因爲你遇到了一個深坑,而且在網上還很難找到其他的解決方案。

我後來仔細的檢查了一遍,發現是version-2的權限問題導致的。

我們仔細觀察我們創建myid的那個data文件夾。這裏我放的目錄是/usr/local/software/zookeeper-3.4.14/data。

我們發現當我們啓動zookeeper後data中除了自己寫的myid外還多出一個version-2的文件夾,這就是關鍵!!我們可以看到這個文件夾對root可執行,但是當我們進入之後,發現裏面的三個文件都是不可執行的。我們需要修改他們的權限!

修改完之後,他們就變成可執行了!

我們對每一臺服務器都進行修改。

然後再重啓zookeeper,查看狀態,發現集羣就啓動了!!

 

這裏,我們在zookeeper.out中只看到了表面錯誤Connection Refused。但是真正造成錯誤的原因就在於

/usr/local/software/zookeeper-3.4.14/data/version-2/acceptedEpoch.tmp(Permissoin denied)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章