Kafka配套的Zookeeper启动脚本
,这个脚本是 Kafka 内置 Zookeeper 的核心启动入口,我先帮你拆解脚本的核心逻辑、关键配置,再结合你之前的场景给出。该脚本是 Kafka 内置 Zookeeper 的标准启动入口,核心是指定配置文件+可选。:Zookeeper 配置文件路径(相对 bin 目录的上级 config 目录)。二、使用该脚本启动 Zookeeper 的正确步骤(适配你的场景)你提供的是 Kafka 配套的
Kafka配套的Zookeeper启动脚本
作者:系统管理员
摘要
Kafka配套的Zookeeper启动脚本
你提供的是 Kafka 配套的 Zookeeper 启动脚本(zookeeper-server-start.sh),这个脚本是 Kafka 内置 Zookeeper 的核心启动入口,我先帮你拆解脚本的核心逻辑、关键配置,再结合你之前的场景给出正确使用这个脚本启动 Zookeeper 的完整步骤,以及常见问题排查。
一、脚本核心逻辑解读(新手友好版)
这个脚本的作用是标准化启动 Kafka 内置的 Zookeeper 服务,核心逻辑可分为5部分:
|
逻辑模块 |
作用 |
关键说明 |
|---|---|---|
|
参数校验 |
if [ $# -lt 1 ]; then ... |
必须传入配置文件(如 |
|
基础路径 |
base_dir=$(dirname $0) |
获取脚本所在目录(即 Kafka 的 |
|
日志配置 |
KAFKA_LOG4J_OPTS |
指定 Zookeeper 的日志配置文件(默认在 |
|
内存配置 |
KAFKA_HEAP_OPTS |
设置 Zookeeper 的 JVM 堆内存(默认 |
|
启动执行 |
exec $base_dir/kafka-run-class.sh ... |
调用 Kafka 的通用类运行脚本,启动 Zookeeper 核心类 |
二、使用该脚本启动 Zookeeper 的正确步骤(适配你的场景)
结合你之前的 Kafka 配置(zookeeper.connect=localhost:2181),按以下步骤启动 Zookeeper:
步骤1:进入 Kafka 的 bin 目录(脚本所在目录)
# 替换为你的 Kafka 实际安装路径,示例:
cd /usr/local/kafka/bin
步骤2:启动 Zookeeper(后台运行,推荐)
# 格式:./zookeeper-server-start.sh -daemon 配置文件路径
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
- •
-daemon:后台启动(避免终端关闭后 Zookeeper 进程终止);
- •
../config/zookeeper.properties:Zookeeper 配置文件路径(相对 bin 目录的上级 config 目录)。
步骤3:验证 Zookeeper 是否启动成功
# 1. 检查 Zookeeper 进程
ps aux | grep zookeeper | grep -v grep
# 正常结果示例:
# root 20200 0.5 1.2 210000 98768 ? Sl 21:00 0:02 /usr/bin/java -Xmx512M -Xms512M ... org.apache.zookeeper.server.quorum.QuorumPeerMain
# 2. 检查 2181 端口监听(Zookeeper 默认端口)
ss -tulnp | grep 2181
# 正常结果:
# tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 20200/java
# 3. 连接 Zookeeper 客户端验证(最准确)
./zookeeper-shell.sh localhost:2181
# 成功进入客户端后,输入 ls / 查看根节点,正常输出:
# [admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
# 输入 quit 退出客户端
三、常见问题与解决(针对该脚本)
问题1:启动时报 找不到 zookeeper.properties
- •
原因:配置文件路径写错(比如绝对路径/相对路径错误);
- •
解决:确认配置文件在
Kafka安装目录/config/zookeeper.properties,启动命令用../config/zookeeper.properties(相对 bin 目录)或绝对路径(如/usr/local/kafka/config/zookeeper.properties)。
问题2:启动后无进程/端口未监听
- •
原因1:JVM 内存不足(默认512M,若服务器内存小,可调低);
解决:修改脚本中的KAFKA_HEAP_OPTS,比如改为-Xmx256M -Xms256M,或在启动前临时设置:export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" ./zookeeper-server-start.sh -daemon ../config/zookeeper.properties - •
原因2:配置文件错误(如
zoo.cfg格式问题);
解决:查看 Zookeeper 日志(默认在Kafka安装目录/logs/zookeeper.out):
常见错误:tail -n 50 ../logs/zookeeper.outAddress already in use(2181端口被占用)→ 用lsof -i :2181找到占用进程并终止。
问题3:后台启动后想停止 Zookeeper
# 执行停止脚本(在bin目录)
./zookeeper-server-stop.sh
四、关键补充(适配你的 Kafka 启动流程)
启动完 Zookeeper 后,必须等待5-10秒让 Zookeeper 完成初始化,再启动 Kafka:
# 启动 Kafka(后台运行)
./kafka-server-start.sh -daemon ../config/server.properties
# 验证 Kafka 启动(参考之前的步骤)
ps aux | grep kafka | grep -v grep
ss -tulnp | grep 9092
总结
-
该脚本是 Kafka 内置 Zookeeper 的标准启动入口,核心是指定配置文件+可选
-daemon后台启动; -
启动顺序:先启动 Zookeeper → 验证 2181 端口 → 再启动 Kafka;
-
验证 Zookeeper 最可靠的方式是用
zookeeper-shell.sh连接客户端,能执行ls /则代表启动成功; -
若启动失败,优先查看
zookeeper.out日志定位问题(端口占用/内存不足/配置错误是高频原因)。
按这个流程操作,就能解决你之前 Kafka 因依赖 Zookeeper 未启动导致的连接失败问题。
原文链接: https://1024bat.cn/article/30
来源: 淘书1024bat
更多推荐
所有评论(0)