记录一次调试zookeeper启动的错误

本文记录了一个关于Zookeeper启动过程中的问题排查经历。作者在启动Zookeeper时遇到了错误提示,通过仔细检查和调试脚本,最终发现了是由于脚本中多余的“-e”参数导致的路径错误。此外,还分享了如何处理重复启动服务的情况。

起因

在网上下载了一个开源项目,需要zookeeper环境,于是在官网下载了一个稳定版,按照教程一路安装,当最后执行 sh zkServer.sh start 时,崩了!出现了下面的错误
在这里插入图片描述
一直找不到文件路径,傻乎乎的我当然不可能怀疑是官方脚本出了问题,于是一直在看自己的zoo.cfg是不是哪里出了问题😭,找了一天也没看出哪里出问题了

解决

一直到刚刚2021年06月09日21:23:21, 我在想是不是脚本的路径写错了,毕竟标记了是169行的问题,鄙人不太懂shell脚本,看到脚本文件有点头疼,跑去百度了两个语法,然后开始用echo打印脚本,发现了一个事实,真的是脚本有点问题!我们从169行开始一路定位到问题114行
在这里插入图片描述
这里echo 多打印了一个-e,导致我们生成的路径成了-e /tmp/zookeeper/zookeeper_server.pid, 这样就出了问题,找不到文件,所以就一直报错!!!
于是我们删除 -e 这时候就解决了这个问题

后续

当我再次启动的时候,发现又出了问题
在这里插入图片描述

这个一般不会遇到,如果出现这种情况大概率可能是你得服务已经启动过一次了,这时候就应该 ps -ef | grep zookeeper 看一下有没有程序启动,如果该进程启动过了,我们就kill -9 xxx杀死进程,之后在去启动 sh zkServer.sh start 发现能够启动了,如下图所示
在这里插入图片描述
总结: 这问题从昨天开始就困扰了我,一直没解决掉!一直今天晚上才搞定,说到底还是菜😭

### 如何在虚拟机上成功启动 ZooKeeper #### 配置环境变量 为了确保 ZooKeeper 能够顺利运行,在虚拟机环境中设置正确的 Java 和 ZooKeeper 环境变量至关重要。确认 `JAVA_HOME` 已经被正确配置,并且可以执行 `java -version` 命令来验证安装情况。 #### 修改配置文件 检查并修改 ZooKeeper 的配置文件 `zoo.cfg` 中的数据目录路径,确保使用正斜杠 `/` 来指定路径而不是反斜杠 `\`[^4]。例如: ```properties dataDir=/opt/zookeeper/data dataLogDir=/opt/zookeeper/logs ``` #### 设置 myid 文件 创建一个名为 `myid` 的文件放在上述配置中的 `dataDir` 下面,里面只包含代表当前节点 ID 的单个整数。对于独立模式下的 ZooKeeper 实例来说,这个值通常是 1。 #### 启动服务命令 利用 systemctl 或者直接调用 bin 目录下的 zkServer.sh 脚本来启动 ZooKeeper 服务器: ```bash sudo systemctl start zookeeper # 如果有systemd支持的话 # 或者 $KAFKA_HOME/bin/zkServer.sh start $ZOOKEEPER_CONFIG_FILE_PATH ``` #### 日志记录调试 如果遇到连接超时异常 java.util.concurrent.TimeoutException,则可能是由于客户端无法及时建立到 ZooKeeper 的会话造成的[^2]。此时应该查看日志文件了解具体错误详情;另外也要注意防火墙规则是否阻止了必要的端口通信 (默认情况下 ZooKeeper 使用的是 2181 端口)。 #### 测试连通性 最后一步是在另一台机器上尝试 telnet 到目标地址的 2181 端口以检验网络可达性和基本功能正常与否。 #### 添加日志框架依赖 当在宿主机中通过Java程序去操作 Kafka Broker 发生问题时,可能是因为缺少 SLF4J 这样的日志门面库及其背后的具体实现类(比如 logback),这会影响应用程序的日志输出机制从而难以定位故障所在[^3]。因此建议开发者们务必引入合适的 logging provider 并调整好相应的属性设定以便更好地捕捉潜在隐患。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值