学习zookeeper踩坑记录
zk报错
1、集群启动失败原因
- zoo.cfg的dataDir的参数没有配置;
- 参数配置了,则myid文件的没有,或者myid的id内容不对应;
- 上面都对,而且都很正常,但是如果zoo.cfg里面dataDir配置是相对路径(dataDir=../data),
- 那么启动方式不对也会导致,先进入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
经过自己踩坑和查找博客,发现报此异常有三种原因
- zookeeper服务没有启动,这是最low的错误
- centos防火墙未关闭,导致连接不上,关于关闭防火墙
- 没有配置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";
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】