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
说明开机自启动已配置成功。
