zookeeper开机自启

1. 创建 systemd 服务文件

sudo tee /etc/systemd/system/zookeeper.service > /dev/null <<'EOF'
[Unit]
Description=Apache ZooKeeper 3.8.1
After=network.target

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/data/zookeeper-3.8.1
ExecStart=/data/zookeeper-3.8.1/bin/zkServer.sh start
ExecStop=/data/zookeeper-3.8.1/bin/zkServer.sh stop
ExecReload=/data/zookeeper-3.8.1/bin/zkServer.sh restart
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

保存退出。


2. 重新加载 systemd

sudo systemctl daemon-reload

3. 设置开机自启动

sudo systemctl enable zookeeper

正常会看到类似输出:

Created symlink from /etc/systemd/system/multi-user.target.wants/zookeeper.service to /etc/systemd/system/zookeeper.service.

4. 切换为 systemd 管理启动

你现在 ZooKeeper 已经在运行,建议先用原脚本停止,再用 systemd 启动。

sudo /data/zookeeper-3.8.1/bin/zkServer.sh stop

确认进程已停止:

ps -ef | grep zookeeper | grep -v grep

如果没有输出,说明已经停掉。

然后用 systemd 启动:

sudo systemctl start zookeeper

5. 查看 systemd 服务状态

sudo systemctl status zookeeper

正常应该能看到类似:

Active: active (running)

如果看到 active (exited) 也不要急,因为 ZooKeeper 的 zkServer.sh start 是 fork 模式,最终还要以 ZooKeeper 自身状态为准。


6. 查看 ZooKeeper 自身状态

sudo /data/zookeeper-3.8.1/bin/zkServer.sh status

你期望看到类似:

Mode: follower

或者:

Mode: leader

只要不是报错,就说明 ZooKeeper 正常。


7. 验证是否已开机自启

systemctl is-enabled zookeeper

如果输出:

enabled

说明开机自启动已配置成功。

image-20260428180927822
滚动至顶部