确保系统已安装 Java(ZooKeeper 需要 Java 运行环境)
java -version
如果未安装,可以使用以下命令安装 OpenJDK:
sudo apt update && sudo apt install openjdk-11-jdk # Ubuntu/Debian
sudo yum install java-11-openjdk-devel # CentOS/RHEL
创建专用用户(可选但推荐)
sudo useradd -m zookeeper
sudo passwd zookeeper
sudo apt update
sudo apt install zookeeper zookeeperd
下载 ZooKeeper
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
注意:请替换为官网最新稳定版本
解压并移动
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
sudo mv apache-zookeeper-3.7.1-bin /opt/zookeeper
sudo chown -R zookeeper:zookeeper /opt/zookeeper
创建数据目录
sudo mkdir -p /var/lib/zookeeper
sudo chown zookeeper:zookeeper /var/lib/zookeeper
复制示例配置文件
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
编辑配置文件
nano zoo.cfg
修改以下关键配置:
dataDir=/var/lib/zookeeper
# 单机模式可保持默认,集群模式需添加类似配置:
# server.1=node1:2888:3888
# server.2=node2:2888:3888
# server.3=node3:2888:3888
sudo service zookeeper start
sudo -u zookeeper /opt/zookeeper/bin/zkServer.sh start
检查状态
/opt/zookeeper/bin/zkServer.sh status
连接客户端
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
创建 systemd 服务文件
sudo nano /etc/systemd/system/zookeeper.service
添加以下内容:
[Unit]
Description=ZooKeeper Service
After=network.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/bin/zkServer.sh restart
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
如需配置集群,需要在每台服务器上:
在 dataDir 目录创建 myid 文件
echo "1" > /var/lib/zookeeper/myid # 第一台服务器写1,第二台写2,以此类推
在所有服务器的 zoo.cfg 中添加服务器列表
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
重启所有 ZooKeeper 服务
如果启用防火墙,需要开放端口:
sudo ufw allow 2181/tcp # 客户端连接端口
sudo ufw allow 2888/tcp # 节点间通信端口
sudo ufw allow 3888/tcp # 选举端口