zookeeper不能正常启动

一、错误信息:zookeeper进程存在,但状态为not running,如下:

[[email protected] bin]# ps -ef|grep ‘zookeeper‘
root      2338     1  0 12:31 pts/6    00:00:35 /opt/jdk1.7.0_80/bin/java -Dzookeeper.log.dir=/usr/local/zookeeper-3.5.1-alpha/bin/../logs -Dzookeeper.log.file=zookeeper-root-server-app1.log -Dzookeeper.root.logger=INFO,CONSOLE -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -cp /usr/local/zookeeper-3.5.1-alpha/bin/../build/classes:/usr/local/zookeeper-3.5.1-alpha/bin/../build/lib/*.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/slf4j-log4j12-1.7.5.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/slf4j-api-1.7.5.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/servlet-api-2.5-20081211.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/jline-2.11.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/jetty-util-6.1.26.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/jetty-6.1.26.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/javacc.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/jackson-mapper-asl-1.9.11.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/jackson-core-asl-1.9.11.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../lib/commons-cli-1.2.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../zookeeper-3.5.1-alpha.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.5.1-alpha/bin/../conf::/opt/jdk1.7.0_80/lib/dt.jar:/opt/jdk1.7.0_80/lib/tools.jar:/opt/jdk1.7.0_80/jre/lib -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper-3.5.1-alpha/bin/../conf/zoo.cfg
root      3264  1896  0 14:17 pts/2    00:00:00 grep zookeeper
[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.5.1-alpha/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
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文件配置没有问题,所以这个也没有解决我的问题

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

#查看防火墙状态

service iptables status

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

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

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

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

三、我遇到的问题采用第四种方式得到解决,因为停电主机宕机,主机重启后防火墙为打开状态

1、zookeeper集群配置

server.1=zk-master:2888:3888:participant
server.2=zk-slave1:2888:3888:participant
server.3=zk-slave2:2888:3888:participant
[[email protected] conf]# cat /etc/hosts
192.168.1.205 zk-master
192.168.1.155 zk-slave1
192.168.1.154 zk-slave2

2、问题

启动顺序为:205--155--154

205的zookeeper状态为

[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.5.1-alpha/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

155和154的主机状态分别是leader和follower.

注意:集群模式要所有主机全部启动才能分出主从,否则单独启动一台主机,状态仍为not running。

此时,从windows doc下执行telnet 192.168.1.205 2181 不能连接,telnet 192.168.1.205 2181连接正常。

3、解决

排除了n多原因(这其中也包括myid文件找不到了,新建了一个,但问题最终没解决,可见还有其他问题),把问题锁定在防火墙上,查看防火墙状态如下:

//此时防火墙为启动状态
[[email protected] bin]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  

 
//执行防火墙关闭命令
[[email protected] bin]# service iptables stop

//此时防火墙为关闭状态
[[email protected] bin]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

再次在windows doc下执行telnet 192.168.1.205 2181,能正常连接

linux下执行 ./zkServer.sh status,状态正常,为follower.

备注:当配置的master不能正常启动时,zookeeper会随机选择一台slave作为master。

时间: 2024-12-06 07:58:56

zookeeper不能正常启动的相关文章

【分布式】Zookeeper服务端启动

一.前言 前面已经了解了Zookeeper会话相关知识点,接着来学习Zookeeper服务端相关细节. 二.服务端 服务端整体架构如下 Zookeeper服务器的启动,大致可以分为以下五个步骤 1. 配置文件解析. 2. 初始化数据管理器. 3. 初始化网络I/O管理器. 4. 数据恢复. 5. 对外服务. 2.1 单机版服务器启动 单机版服务器的启动其流程图如下 上图的过程可以分为预启动和初始化过程. 1. 预启动 1. 统一由QuorumPeerMain作为启动类.无论单机或集群,在zkSe

zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888

zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888 2018年04月06日 20:52:55 中单大魔王 阅读数:729 标签: zookeeper 下面几点需要注意的: 1.确认在每个$zookeeper_home/data/myid中有对应数字 2.是否关闭防火墙:systemctl stop firewalld,systemctl disable firewalld 3.zoo.cfg中的server需

Zookeeper【客户端启动】

今天我们来说说 Zookeeper 客户端启动,整个文章分三个部分:第一部分是 Zookeeper 原生 API 客户端,第二部分是开源客户端 ZkClient,第三部分是开源客户端 Curator. [Zookeeper API 客户端]

Zookeeper集群启动失败

错误原因: myid文件创建位置不对,应该为data目录下 Zookeeper重复启动,2次start,没有stop. 解决方案:   在data下创建myid,使用cat myid查看创建是否正确 删除启动在data目录下产生的zookeeper_server.pid文件 注意:Zookeeper一定要用命令关闭! JMX enabled by default Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg Error contactin

Zookeeper群起脚本启动失败及查看状态出现:Error contacting service. It is probably not running

1.问题: 群起脚本启动后查看jps没有出现:QuorumPeerMain Zookeeper正常启动但是群起脚本查状态出现:Error contacting service. It is probably not running错误 ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Error contacting service. It is prob

zookeeper的开启启动

[[email protected] zookeeper]# cd /etc/init.d [[email protected] init.d]# cat zookeeper  #!/bin/bash   #chkconfig: 2345 10 90   #description: service zookeeper   export JAVA_HOME=/opt/jdk export   ZOO_LOG_DIR=/home/bb/zookeeper/log  ##zookeeper的配置文件的

ZooKeeper启动过程

1.如何启动 zkServer.sh[Linux]或 zkServer.cmd[Windows] 以zkServer.cmd为例(zkServer.sh中内容太多): 可以清晰的看出:调用了QuorumPeerMain这个类,传的参数为%ZOOCFG%[在zkEnv.cmd中定义,就是zoo.cfg]. 到QuorumPeerMain类中一看,果然有个main方法,且接受一个参数[配置文件路径]: 当然,接受的参数不是一个也没关系,只不过就不能集群了,只能以单机模式运行.仅当接受一个参数作为配置

Centos7以普通用户启动zookeeper并加入开机自启动服务

我的环境的zookeeper目录为/opt/app/zk,假设我想以zookeeper用户启动 以下示例,在/etc/systemd/system/文件夹下创建一个启动脚本zookeeper.service [Unit] Description=zookeeper After=syslog.target network.target [Service] Type=forking Environment=ZOO_LOG_DIR=/opt/app/zk/log ExecStart=/opt/app/

Apache ZooKeeper 服务启动源码解释

转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服务启动的三种方式,即 Standalone.伪分布式.分布式.然后针对分布式模式启动步骤进行逐步介绍,从 Shell 脚本开始,一直介绍到服务完全启动过程中所有的执行过程.通过本文读者基本可以掌握 ZooKeeper 如何启动.启动过程中做了哪些工作. 分布式系统从根本上来说就是不同节点上的进程并发