docker连接Zookeeper的坑~

昨天的项目上发现了一个zookeeper的连接问题,服务是在docker上部署运行的,管理redis集群的codis使用zookeeper来管理,服务实例化时,添加codis-proxy卡住,超时后自动重启。

zookeeper日志报错如下:

WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception

EndOfStreamException: Unable to read additional data from client sessionid 0x36219a87ed50024, likely client has closed socket。

zookeeper为3台服务器的集群,集群状态(zkServer.sh status)正常,使用zookeeper的客户端zkClient.sh连接正常。

1、zookeeper服务端版本3.4.10,与服务中的jar(3.4.8)版本不一致,降低zookeeper版本至3.4.8,问题未解决;

2、修改zookeeper的ticketTime,问题未解决;

3、修改zookeeper集群中的server-id的配置方式,本机改为0.0.0.0,问题未解决;

怀疑docker中的服务无法直接访问物理机上的zookeeper,可能要加一层服务做代理,但是代理无法进行zookeeper的集群配置,只能通过负载的方式,果断放弃。

无意间发现docker启动时限制了内存大小——1G,去掉此限制,连接正常,问题解决。

你可能感兴趣的:(docker连接Zookeeper的坑~)