学习zookeeper踩坑记录

zk报错

1、集群启动失败原因

  1. zoo.cfg的dataDir的参数没有配置;
  2. 参数配置了,则myid文件的没有,或者myid的id内容不对应;
  3. 上面都对,而且都很正常,但是如果zoo.cfg里面dataDir配置是相对路径(dataDir=../data),
  4. 那么启动方式不对也会导致,先进入bin路径下,执行./zkServer.sh start命令。对于个人习惯喜欢./bin/zkServer.sh这样执行命令,就会导致myid file is missing的错误。


2、同时启动或停止集群报错

JAVA_HOME is not set and java could not be found in PATH

在学习搭建zookeeper集群的时候会经常的启动和停止zookeeper服务,以及查看服务状态。一个一个启动非常麻烦,通过一段shell脚本来进行启动就非常方便了。
那么问题来了,单独启动zookeeper服务的时候是完全没问题的,通过脚本来启动的时候就会报错:

解决办法:
在zookeeper目录下的bin目录下,有一个zkEnv.sh文件,在文件代码部分的 前面 加上自己的JAVA_HOME路径即可。

export JAVA_HOME=/opt/bigdata/java1.8 然后 xsync 传给其他集群

KeeperErrorCode = ConnectionLoss for / 问题解决大全

我的开发环境是
Windows开发zookeeper客户端程序,,zookeeper集群安装在本地 虚拟机上centos 7

经过自己踩坑和查找博客,发现报此异常有三种原因

  1. zookeeper服务没有启动,这是最low的错误
  2. centos防火墙未关闭,导致连接不上,关于关闭防火墙
  3. 没有配置Windows的host文件,或许也会有像我一样想偷懒的人,程序里的地址使用ip代替.如下
  private static final String  connectString = "192.168.88.60:2181,192.168.88.61:2181,192.168.88.62:2181";
  private static final int sessionTimeout = 2000;
  private ZooKeeper zkClient;

  @Before
  public void init() throws IOException {
       zkClient = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
          @Override
          public void process(WatchedEvent watchedEvent) {

          }
      });
  }

别偷懒了去改一下Windows的host文件吧
Windows10的host文件位置是
C:\Windows\System32\drivers\etc

在host文件下加上zookeeper安装主机对应ip和主机名即可

在程序里写connectString不可使用ip,必须使用主机名

如下:private static final String connectString = "Master:2181,Slave1:2181,Slave2:2181";

posted @   残阳似影  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示