zookeeper提示Unable to read additional data from server sessionid 0x


配置zookeeper集群,一開始配置了兩台機器server.1和server.2。

配置參數,在zoo.cfg中指定了整個zookeeper集群的server編號、地址和端口:

server.1=10.10.16.151:2888:3888
server.2=10.10.16.234:2888:3888

然后為這兩個個節點創建對應的編號文件,在/tmp/zookeeper/data/myid文件中。如下:

在server.1=10.10.16.151機器上執行:

echo 1 > /tmp/zookeeper/data/myid

在server.1=10.10.16.234機器上執行:

echo 2 > /tmp/zookeeper/data/myid

啟動server.1測試dubbo服務,使用zkServer.sh start啟動了server.1,然后使用zkServer.sh status查看工作狀態,顯示

Error contacting service. It is probably not running.

通過zkCli.sh -server 10.10.16.151:2181查看服務詳細,發現服務提示了下面的錯誤信息。

啟動時提示:

2017-09-15 14:57:27,139 [myid:] - INFO  [main-SendThread(10.10.16.151:2181):ClientCnxn$SendThread@1035] - Opening socket connection to server 10.10.16.151/10.10.16.151:2181. Will not attempt to authenticate using SASL (java.lang.SecurityException: Ϟ·¨¶¨λµȂ¼Ƥ׃)
2017-09-15 14:57:27,140 [myid:] - INFO  [main-SendThread(10.10.16.151:2181):ClientCnxn$SendThread@877] - Socket connection established to 10.10.16.151/10.10.16.151:2181, initiating session
2017-09-15 14:57:27,143 [myid:] - INFO  [main-SendThread(10.10.16.151:2181):ClientCnxn$SendThread@1161] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

后來才搞明白,由於我在zoo.cfg中配置了2台機器,但是只啟動了1台,zookeeper就會認為服務處於不可用狀態。

通過zookeeper的選舉算法得知,當整個集群超過半數機器宕機,zookeeper會認為集群處於不可用狀態。所以啟動2台服務正常。

然后我又增加了1台server.3=10.10.16.241:2888:3888機器節點,在3台都啟動的情況下,關掉其中1台,服務正常,關掉2台,服務不可用。

所以,zookeeper集群只啟動一台無法連接,如果啟動機器數為半數及以上就可以連接了。


免責聲明!

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



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