温馨提示×

linux上zookeeper怎么启动

小樊
42
2026-09-16 16:08:10
栏目: 智能运维

在 Linux 上启动 ZooKeeper 通常有几种方式,取决于你是 单机模式 还是 集群模式,以及是否使用自带脚本。


一、前置条件

  1. 已安装 JDK(ZooKeeper 依赖 Java)
java -version
  1. 已下载并解压 ZooKeeper
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
cd apache-zookeeper-3.8.0-bin
  1. 配置 zoo.cfg
cp conf/zoo_sample.cfg conf/zoo.cfg

二、单机模式启动(最常用)

1️⃣ 使用自带脚本启动(推荐)

bin/zkServer.sh start

启动成功会看到类似:

ZooKeeper JMX enabled by default
Using config: /xxx/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED

2️⃣ 查看状态

bin/zkServer.sh status

3️⃣ 停止 ZooKeeper

bin/zkServer.sh stop

三、前台启动(调试用)

bin/zkServer.sh start-foreground

适合排查启动失败问题。


四、使用 systemd 启动(生产推荐)

1️⃣ 创建服务文件

sudo vim /etc/systemd/system/zookeeper.service

内容示例:

[Unit]
Description=Apache ZooKeeper
After=network.target

[Service]
Type=forking
User=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

2️⃣ 重载并启动

sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl enable zookeeper

五、集群模式简要说明

zoo.cfg 中配置:

server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

在每个节点创建:

echo "1" > /data/myid   # node1
echo "2" > /data/myid   # node2
echo "3" > /data/myid   # node3

然后每个节点执行:

bin/zkServer.sh start

六、常见问题

✅ 端口被占用

  • 默认端口:2181

✅ myid 配置错误(集群)

  • myid 必须和 server.x 对应

✅ 数据目录不存在

dataDir=/data/zookeeper

如果你告诉我:

  • ZooKeeper 版本
  • 单机还是集群
  • 是否用 Docker

我可以给你更精确的启动方式。

0 踩