Zookeeper_Error contacting service. It is probably not running.解决方式汇总

使用命令zkServer.sh status查看zookeeper各节点状态的时候出现Error contacting service. It is probably not running.的错误

查看zookeeper.out见有以下WARN

Cannot open channel to 101 at election address slave01/*.*.*.*:3888
java.net.SocketTimeoutException: connect timed out

解决方法:

1.确保zookeeper安装目录下的conf下的zoo.cfg配置了如下信息

server.100=master:2888:3888
server.101=slave01:2888:3888
server.102=slave02:2888:3888

2.确保zoo.cfg文件配置的dataDir目录下有myid文件并且内容为该机id,如果像上面一样配置了三台服务器id分别为100,101,102则每台服务器的myid文件中写入各自的编号。

3.上面两步都没错之后发现错误还是没有消失,检查/etc/hosts文件中自己的主机名是否解析为127.0.0.1,或者如果是阿里云的ECS的话有默认自己的主机名解析为内网地址,如果你将自己的主机名改成了解析为外网地址,那么zookeeper将无法在zoo.cfg文件中没有0.0.0.0的情况下启动。

方式一:

将/etc/hosts/中的自己的主机名解析成内网地址

方式二:

修改每台服务器中的zoo.cfg配置信息

然后重启zookeeper

master

server.100=0.0.0.0:2888:3888
server.101=slave01:2888:3888
server.102=slave02:2888:3888

slave01

server.100=master:2888:3888
server.101=0.0.0.0:2888:3888
server.102=slave02:2888:3888

slave02

server.100=master:2888:3888
server.101=slave01:2888:3888
server.102=0.0.0.0:2888:3888

然后重启zookeeper

到了这里如果还是没解决错误,可以尝试下面几种方式

1.关闭防火墙

2.如果是ECS则去控制台添加安全组规则开放zookeeper相关的端口

3.删除dataDir目录下的zookeeper_server.pid文件然后重启zk

注意:因为每台服务骑上的zkServer服务都是有先后顺序启动的,最先启动的那台服务器肯定会报Cannot open channel to 101 at election address slave01/*.*.*.*:3888的错误,因为其他服务器上还没有启动zkServer,所以看最后一台服务器的日期里没有错误就好了。

参考网址

https://stackoverflow.com/questions/30940981/zookeeper-error-cannot-open-channel-to-x-at-election-address

猜你喜欢

转载自blog.csdn.net/zzf1510711060/article/details/82952156