在 CentOS 上配置 Zookeeper 数据目录
一、准备与规划
- 选择持久且空间充足的目录,例如:/var/lib/zookeeper;避免使用 /tmp。
- 建议将事务日志与快照分离,新增 dataLogDir(如:/var/log/zookeeper),可显著提升性能与可维护性。
- 确认运行用户(常见为 zookeeper),并提前规划好目录权限与磁盘挂载(如独立磁盘或 LVM 卷)。
二、配置步骤
- 停止服务(若已运行)
- 使用系统服务:sudo systemctl stop zookeeper
- 或使用脚本:/opt/zookeeper/bin/zkServer.sh stop
- 创建目录
- 数据目录:sudo mkdir -p /var/lib/zookeeper
- 事务日志目录:sudo mkdir -p /var/log/zookeeper
- 设置属主属组(以运行用户为 zookeeper 为例)
- sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
- sudo chown -R zookeeper:zookeeper /var/log/zookeeper
- 修改配置文件 zoo.cfg
- 常见路径:/etc/zookeeper/conf/zoo.cfg 或 $ZOOKEEPER_HOME/conf/zoo.cfg
- 关键参数:
- dataDir=/var/lib/zookeeper
- dataLogDir=/var/log/zookeeper(强烈建议配置)
- clientPort=2181
- 启动服务
- 系统服务:sudo systemctl start zookeeper
- 脚本:/opt/zookeeper/bin/zkServer.sh start
- 验证
- 服务状态:sudo systemctl status zookeeper
- 四字命令健康检查:echo ruok | nc localhost 2181(返回 imok 表示正常)
三、集群节点补充
- 在 dataDir 下为每个节点创建 myid 文件,内容为唯一 server.x 的 x:
- 节点1:echo “1” > /var/lib/zookeeper/myid
- 节点2:echo “2” > /var/lib/zookeeper/myid
- 节点3:echo “3” > /var/lib/zookeeper/myid
- 在 zoo.cfg 中配置集群成员:
- server.1=192.168.0.1:2888:3888
- server.2=192.168.0.2:2888:3888
- server.3=192.168.0.3:2888:3888
- 注意:各节点的 myid 必须与其 server.x 的 x 一致。
四、安全与运维要点
- SELinux:若启用,需为数据目录设置正确的 SELinux 上下文(如 zookeeper_var_lib_t),或临时设为宽松模式测试:sudo setenforce 0(生产不建议长期关闭)。
- 防火墙:开放客户端端口(默认 2181/tcp)
- sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
- sudo firewall-cmd --reload
- 清理策略:开启自动清理,避免磁盘被快照与事务日志撑满
- autopurge.snapRetainCount=10
- autopurge.purgeInterval=48(单位:小时)
- 权限与属主:确保运行用户对 dataDir 与 dataLogDir 具备读写权限;目录路径避免使用 /tmp。