首先排查:
1、虚拟机防火墙是否关闭
2、Windows防火墙是否关闭
3、ZooKeeper版本是否与pom文件依赖版本一致
4、增大sessionTimeout参数的值(ZooKeeper对象第二个参数)
上述问题排查完毕再往下看:
ZooKeeper版本:3.5.7
Java版本:JDK1.8
对应pom依赖:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.7</version> </dependency>
Java代码:
ZooKeeper zk = new ZooKeeper("192.168.10.131:2181,192.168.10.132:2181,192.168.10.133:2181", 2000, watchedEvent -> {}); zk.create("/test", "hello".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
产生错误:
java.net.SocketException: Socket is not connected ... org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /test
错误产生原因:虚拟机配置了hosts映射,Windows没有配置
ZooKeeper配置:
server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
因此Windows运行Java代码连接ZooKeeper也要配置hosts映射。
hosts文件位置:C:\Windows\System32\drivers\etc\hosts(请调整为实际IP地址)
192.168.10.131 zk1 192.168.10.132 zk2 192.168.10.133 zk3
配置完成后再次运行Java代码,正常运行。
标签:zookeeper,Java,Windows,ZooKeeper,KeeperErrorCode,192.168,报错,hosts From: https://www.cnblogs.com/SamNicole1809/p/17107785.html