zookeeper(版本为3.4.12)集群版 单个启动 命令行 启动都成功没问题 

但是一查看 zookeeper状态(命令 ./zkServer.sh status )就出如下问题 (这是要害死强迫症啊)

JMX enabled by default

Using config: /usr/local/develope/zookeeper-clusters/zookeeper-server3/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

首先度娘一波 发现一波帖子

  

1,打开zkServer.sh 找到status)

STAT=`echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉
注:因为我用的zookeeper是3.4.5版本,所以在我的zkServer.sh脚本文件里根本没有这一行,所以没有生效

2,调用sh zkServer.sh status 遇到这个问题。百度,google了后发现有人是修改sh脚本里的一个nc的参数来解决,可在3.4.5的sh文件里并没有找到nc的调用。配置文档里指定的log目录没有创建导致出错,手动增加目录后重启,问题解决。
注:我想不是日志的问题所以这个方法根本就没有试

3,创建数据目录,也就是在你zoo.cfg配置文件里dataDir指定的那个目录下创建myid文件,并且指定id,改id为你zoo.cfg文件中server.1=localhost:2888:3888中的    1.只要在myid头部写入1即可.
注:在我第二次安装的时候,没有将myid文件创建在dataDir指定的那个目录下,也报了该错误。之后在dataDir指定的那个目录下创建myid文件就没有报错。

4 因为防火墙没有关闭。关闭防火墙:

  #查看防火墙状态

   service iptables status 

  #关闭防火墙
   service iptables stop
  #查看防火墙开机启动状态
   chkconfig iptables --list
  #关闭防火墙开机启动
   chkconfig iptables off

 注意:我的确在开始时候没有关闭防火墙,但是当我关闭防火墙之后也没有解决问题。

5 没有建立主机和ip之间的映射关系。

  建立主机和ip之间映射关系的命令为 vim /etc/hosts   在文件的末端加入各个主机和ip地址之间的映射关系就可以了。

  注意:只有在建立了映射关系之后,才可以将在同一个网段下的机器利用主机名进行文件传递。问题解决!

 如图 有5个解决方案 但是 有5个 一个 一个检查过来 发现 myid 也有 也没开防火墙 

这下问题大了   突然一看zoo.cfg文件 

发现 3个server的 ip配置有问题 都是在同一台机器上 localhost 就可以啊 ( 复制过来的忘了改了 )

将这个3个 zookeeper的zoo.cfg配置文件都改了 以后 重新 停止 然后 在开启  

在使用客户端 连接每一个 启动的server (命令:./zkCli -server ip:port)

当连接 本地 默认2181端口是 需要添加 -server ip:port 直接使用 ./zkCli 即可




突然一查 zookeeper-server1的状态 好了 


果然 只要用心 没有搞不定的bug oh yeah

参考博文:https://www.cnblogs.com/xiaohua92/p/5460515.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐