zookeeper服务启动报错&zookeeper加入到开机自启服务

一 zookeeper服务启动报错

1 报错信息:

JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

2 原因

zookeeper服务启动失败,节点连接异常

3 解决办法 

网上搜的解决办法有很多,开放端口、端口占用,防火墙未关闭等,所有方法都试了,但是仍然启动失败。

最终解决办法:

发现本机同时安装了iptables和firewalld防火墙,而且会有冲突,需要禁用一个防火墙

本文采用的是禁用iptables,启动firewalld防火墙,命令如下

systemctl stop iptables.service
systemctl mask iptables.service 
systemctl unmask firewalld.service
systemctl restart firewalld.service #启动firewalld防火墙

 然后重启zookeeper服务

service zookeeper start
查看当前状态
service zookeeper status

这种启动方式需要将zookeeper加入到开机自启,方法见下文

4 网上普遍的解决办法:

1、开放端口

#添加
firewall-cmd --zone=public --add-port=3288/tcp --permanent
#重启
firewall-cmd --reload
查看开放端口
firewall-cmd --list-ports

2、关闭防火墙

查看防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
禁止开机启动防火墙
systemctl disable firewalld

3、如果集群没有启动,那么该端口不应该被占用

netstat -apn | grep 2181   #默认2181端口为服务端提供端口,如果你的修改了,按你的实际情况为准
# 查询出来占用2181端口的进程PID后杀掉即可
kill -9 pid  

一般会有启动失败的zookeeper进程在

二、zookeeper开机自启服务

1 配置zookeeper启动脚本,然后分发到三台主机

vim /etc/init.d/zookeeper

#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/software/zookeeper'
case $1 in
start)
  echo "zookpeeper 启动"
  echo "$ZK_HOME/bin/zkServer.sh start"  
  $ZK_HOME/bin/zkServer.sh start
;;
stop)
  echo "zookpeeper 停止"
  echo "$ZK_HOME/bin/zkServer.sh stop"
  $ZK_HOME/bin/zkServer.sh stop
;;
restart)
  echo "zookpeeper 重启"
  echo "$ZK_HOME/bin/zkServer.sh restart"
  $ZK_HOME/bin/zkServer.sh restart
;;
status)
  echo "zookpeeper 状态"
  echo "$ZK_HOME/bin/zkServer.sh status"
  $ZK_HOME/bin/zkServer.sh status
;;
*)
  echo "Usage: $0 {start|stop|restart|status}"
esac

2、设置开机自启,每台机群

[root@localhost conf]# chmod +x /etc/init.d/zookeeper
[root@localhost conf]# chkconfig --add zookeeper
分别启动Zookeeper
[root@localhost conf]# service zookeeper start
查看当前状态
[root@localhost conf]# service zookeeper status

你可能感兴趣的:(hadoop组件部署,zookeeper,linux,分布式)