CentOS 7 作为一款稳定的服务器操作系统,常被用于部署分布式应用,而 ZooKeeper(ZK)作为分布式协调服务,其安装与配置是许多系统的关键环节,以下是详细的安装步骤与注意事项,帮助你在 CentOS 7 上顺利完成 ZK 的部署。

环境准备
在安装 ZK 前,需确保系统满足基本要求,检查 CentOS 7 的版本,可通过 cat /etc/redhat-release 确认,建议使用最小化安装的纯净系统,避免不必要的软件冲突,确保系统已安装 Java 环境,ZK 依赖 Java 运行时(推荐 JDK 8 或更高版本),可通过 java -version 验证,若未安装,使用 yum install java-1.8.0-openjdk -y 安装 OpenJDK,关闭防火墙或配置相应端口规则(默认端口 2181),可通过 systemctl stop firewalld 临时关闭,或使用 firewall-cmd --permanent --add-port=2181/tcp 开放端口。
下载与解压 ZK
从 Apache 官网获取 ZK 安装包,以 3.7.0 版本为例,下载链接为 https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz,使用 wget 命令下载:wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz,下载完成后,通过 tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz 解压至 /usr/local 目录,并创建软链接方便管理:ln -s /usr/local/apache-zookeeper-3.7.0-bin /usr/local/zookeeper。
配置 ZK
ZK 的核心配置文件为 zoo.cfg,位于解压目录的 conf 目录下,首先复制模板文件:cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg,随后编辑 zoo.cfg,主要参数包括:

dataDir:指定数据存储目录,建议创建独立目录如/data/zookeeper/data,并确保权限为chown -R zookeeper:zookeeper /data/zookeeper。dataLogDir:指定事务日志目录,可设置为/data/zookeeper/logs,与数据目录分离以提高性能。clientPort:客户端连接端口,默认 2181,若需修改需确保端口未被占用。server.X:集群模式下配置节点信息,格式为server.X=IP:2888:3888,X 为服务器 ID。
创建必要目录
根据 zoo.cfg 中的配置,创建数据目录和日志目录:mkdir -p /data/zookeeper/data /data/zookeeper/logs,并将所有者修改为运行 ZK 的用户(如 zookeeper),若使用 root 用户运行,需注意权限安全性,建议创建专用用户。
启动与验证 ZK
进入 ZK 安装目录的 bin 文件夹,执行 ./zkServer.sh start 启动服务,可通过 ./zkServer.sh status 查看运行状态,若显示 “Mode: standalone” 表示单节点启动成功,客户端连接使用 ./zkCli.sh -server 127.0.0.1:2181,连接后执行 ls / 验证是否正常返回数据列表,若需开机自启,可将 ZK 服务添加至 systemd,创建 /etc/systemd/system/zookeeper.service 文件,配置启动参数并执行 systemctl enable zookeeper。
常见问题处理
启动时若提示端口占用,可通过 netstat -tulnp | grep 2181 查看进程并终止,若日志报错 “No such file or directory”,需检查 dataDir 和 dataLogDir 路径是否存在及权限是否正确,集群模式下需确保所有节点的时间同步,使用 ntpdate 同步时间可避免因时钟差异导致的问题。

FAQs
Q1: ZooKeeper 启动后客户端无法连接,如何排查?
A: 首先检查防火墙是否开放 2181 端口,使用 telnet IP 2181 测试网络连通性,其次查看 ZK 日志(默认在 dataDir 下的 zookeeper.out),确认是否有绑定失败或权限错误,若为集群模式,检查 server.X 配置是否正确,且所有节点可互相通信。
Q2: 如何修改 ZooKeeper 的数据存储位置?
A: 编辑 zoo.cfg 文件,修改 dataDir 和 dataLogDir 参数为新路径,停止 ZK 服务后创建新目录并赋予正确权限,最后重启服务,注意:旧数据需手动迁移至新路径,否则会导致数据丢失。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复