zookeeper能启动但无法选举问题

来源:互联网 发布:99是什么意思网络语言 编辑:程序博客网 时间:2024/05/17 22:39

今天一大早4点多就睡不着了,困绕了我近半年的zookeeper能启动但无法选举问题让我头疼。起床试试吧。

经过一天的奋战,试了无数种方法(当然因为zookeeper用途太广了,这半年也多次尝试,却都没有解决)。

现象:

1.QuorumPeerMain进程可能正常启动。但使用zkServer.sh status查看状态时报:[richard@richard3 zookeeper-3.4.6]$ bin/zkServer.sh status
JMX enabled by default
Using config: /home/richard/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

2.查看日志发现报错:

2016-01-16 19:04:51,488 [myid:0] - WARN  [WorkerSender[myid=0]:QuorumCnxManager@
382] - Cannot open channel to 2 at election address /192.168.1.112:3888
java.net.ConnectException: 拒绝连接
    at java.net.PlainSocketImpl.socketConnect(Native Method)  ............


我试过几种方案:

1.防火墙未关闭,因为我使用的是centos7,防火墙关闭方法与以前不一样了,从网上查了一下,使用chkconfig   iptables off关闭。问题未解决。

2.java版本太高?因为我用的是java8,所以怀疑java版本问题。降到java7。同样未能解决问题。

3.网上查到

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.6,zkServer.sh脚本文件里根本没有这一行,我的zkServer.sh中是下面这样:

STAT=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
             -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain \
             $clientPortAddress $clientPort srvr 2> /dev/null    \
          | grep Mode`
    if [ "x$STAT" = "x" ]
    then
        echo "Error contacting service. It is probably not running."
        exit 1
    else
        echo $STAT
        exit 0
    fi

所以此法无效。


3.虚拟机的问题?我就装了windows 和linux双系统。

在纯linux下装了虚拟机也不管用。


。。。。。。。

今天经过一天的奋斗结果发现原因竟是最简单的问题:防火墙的问题。其实应该把iptables和firewall都关掉才行,而我只把iptables关闭了,而firewall却逍遥法外,应该用下面方法把firewall也关掉。

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)



0 0
原创粉丝点击