客户端操作连接zookeeper时报错,KeeperException$ConnectionLossException: KeeperErrorCode =ConnectionLoss for ...

初学zookeeper的时候,使用zookeeper原生的客户端API操作zookeeper,发现了有连接不上zookeeper的问题,网上说的有好多中可能,这里经过我测试,将这几种可能性一一列举总结出来,供大家参考一下,也为自己以后再出现此类问题时提供解决方案;好了,废话不多说了,一下是正文:

连接不上主要存在的可能因素

Ⅰ :zookeeper节点或集群的防火墙未关闭。这样会导致Linux为开放zookeeper的客户端连接的端口而无法连接

 

Ⅱ:使用zookeeper原生的客户端API连接时,设置的sessionTimout时间太短,这个时间个人认为必须要大于zookeeper配置文件中的一个心跳的时间,如果小于一个心跳的时间,zookeeper给客户端发送心跳的时候客户端还没有收到就已经超时了,永远也不会连上;所以如果zookeeper的一个心跳时间是2000ms,那么至少客户端的sessTimout时间是3000ms

 

Ⅲ:网络不稳定,这种情况就是客户端和zookeeper之间网络连接不稳定的情况下也会导致这个问题;在客户端和zookeeper的服务器上互相ping一下看看是否有网络丢包率的存在

 

Ⅳ:如果以上三种情况都不是,那么就要检查zookeeper集群有没有在正常运行,如果是可以运行的,那么检查一下客户端连接的url是否有问题,集群的话必须保证每个地址都是对的,不然也是无法连接的

 

以上如果不能解决问题,这个也有可能是其他问题导致KeeperErrorCode =ConnectionLoss,那么你可能要仔细排查一下问题了

你可能感兴趣的:(zookeeper)