Zookeeper入門-Linux環境下異常ConnectionLossException解決

小雷FansUnion發表於2015-12-01


  實際專案開發中,用的是Linux環境。
  中午突然斷電,死活連不上Zookeeper,最終發現是需要關閉防火牆。
  
  看日誌,報錯如下:
  Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /test
at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1501)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1529)
at com.jiq.test.ZooKeeperTest.main(ZooKeeperTest.java:12) 


  經過實踐,最終發現是“防火牆”的原因。
  主要參考了網上的一篇文章。
  
  不正確的解決辦法:
  “上網一查,全是說什麼到Zookeeper服務的連線未完成,說是加下面這段程式碼就好了: 
CountDownLatch connectedLatch = new CountDownLatch(1);
        if (States.CONNECTING == zk.getState()) {  
            try {  
                connectedLatch.await();  
            } catch (InterruptedException e) {  
                throw new IllegalStateException(e);  
            }  
        }


我覺得這有點扯淡,首先官網沒有任何提到要加這樣的程式碼來等待連線準備好的話語,其次為什麼本機可以,遠端就不行,難道天生本機就一定能夠快速建立好連線,遠端就要等一等麼? 
於是我決定自己思考,想了一天才覺得可能是防火牆問題,於是把windwos server 2008防火牆關閉,OK了,把CentOS防火牆關閉,也OK了,哎!”


 看了這個哥們的描述,我深以為然啊。
 我也嘗試過,加一些亂七八糟的程式碼,發現都不能解決問題。
 最終,嘗試了這個哥們的“關閉防火牆”的解決辦法。
  
 但是,這篇文章中,永久關閉防火牆的那種方式,是不對的,只要使用了,Zookeeper就連線不上。
 
 “CentOS關閉防火牆命令: 
CentOS Linux開啟和關閉防火牆命令有兩種,一種是臨時的,重啟即復原;另外一種是永久xìng的,重啟不會復原。
1) 臨時生效,重啟後復原
開啟: service iptables start
關閉: service iptables stop
2) 永久xìng生效,重啟後不會復原
開啟: chkconfig iptables on
關閉: chkconfig iptables off


我執行的是永久修改的命令,執行完了也可以不重啟電腦,重啟防火牆服務即可: service iptables restart ”


實際中,我用的是臨時的關閉防火牆的辦法,這樣,如果伺服器再次斷電重啟,還需要手動關閉。
這個哥們貌似是“永久關閉防火牆”,反正我也試了,永久關閉,總是不行,可能是我的問題。
這個哥們說,不用重啟伺服器,反正我沒有重啟,不知道重啟了效果會如何。


一點感想
自己遇到的很多問題,網上基本都有答案了。
優先用別人的解決辦法,是非常合適的,比較迅速,很快提升自己解決問題的能力。
技術框架之類的,主要還是別人生成,在水平不夠之前,“拿來主義”是不錯的。
隨便一個工具框架,自己去搞,至少得個把月上年吧~


整理自己的技術體系,管理自己遇到的問題,很有必要。


一句話:建立健全自己的技術體系和社會生存能力體系。(怎麼感覺像是官方檔案呢~)


最近,抽空,分享下自己的瀏覽器收藏夾,和一些知識管理的心得體會~


參考資料
Zookeeper異常ConnectionLossException解決
http://www.sjsjw.com/kf_cloud/article/022572ABA018042.asp

相關文章