温馨提示×

centos怎么设置zookeeper开机启动

小樊
46
2026-10-03 11:02:40
栏目: 智能运维

在 CentOS 上设置 ZooKeeper 开机自启,常见有两种方式:systemd(推荐,CentOS 7+) 和 rc.local(简单但不推荐生产)。下面分别说明。


一、使用 systemd(CentOS 7 / 8 / Stream 推荐)

1. 假设环境

  • ZooKeeper 安装目录:/opt/zookeeper
  • 配置文件:/opt/zookeeper/conf/zoo.cfg
  • Java 已安装,且 JAVA_HOME 已知(如 /usr/java/jdk1.8.0_201)

2. 创建 systemd 服务文件

vi /etc/systemd/system/zookeeper.service

内容示例:

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

[Service]
Type=forking
Environment=JAVA_HOME=/usr/java/jdk1.8.0_201
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

如果你用普通用户运行,把 User=root 改成对应用户名,并确保目录权限正确。

3. 重载并启用

systemctl daemon-reload
systemctl enable zookeeper
systemctl start zookeeper

4. 验证

systemctl status zookeeper
# 或
/opt/zookeeper/bin/zkServer.sh status

二、使用 rc.local(不推荐,仅应急)

1. 编辑 rc.local

vi /etc/rc.d/rc.local

添加:

export JAVA_HOME=/usr/java/jdk1.8.0_201
/opt/zookeeper/bin/zkServer.sh start

2. 赋予执行权限

chmod +x /etc/rc.d/rc.local

⚠️ 注意:rc.local 启动顺序不可控,可能在网络未就绪时启动失败。


三、常见问题排查

  1. 启动失败
    • 查看日志:
      tail -f /opt/zookeeper/logs/zookeeper-*.out
      
  2. myid 未配置
    • dataDir 目录下必须有 myid 文件
  3. 端口被占用
    • 默认 2181,确认未被占用

如果你能告诉我:

  • CentOS 版本
  • ZooKeeper 安装方式(tar / yum)
  • 是否集群

我可以给你更精确的配置示例。

0 踩