下面给你一份**在 CentOS 上集群部署 ZooKeeper(3 节点示例)**的完整操作指南,适用于 CentOS 7 / 8,ZooKeeper 3.6+ 版本通用。
假设有 3 台 CentOS 服务器:
| 主机名 | IP |
|---|---|
| zk1 | 192.168.1.11 |
| zk2 | 192.168.1.12 |
| zk3 | 192.168.1.13 |
建议关闭防火墙或放行 2181、2888、3888 端口
systemctl stop firewalld
systemctl disable firewalld
或放行端口:
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent
firewall-cmd --reload
yum install -y java-1.8.0-openjdk
java -version
cat >> /etc/hosts <<EOF
192.168.1.11 zk1
192.168.1.12 zk2
192.168.1.13 zk3
EOF
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin zookeeper
mkdir -p /data/zookeeper
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
zoo.cfg 示例:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
在 每台机器 上执行:
# zk1
echo 1 > /data/zookeeper/myid
# zk2
echo 2 > /data/zookeeper/myid
# zk3
echo 3 > /data/zookeeper/myid
/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper/bin/zkServer.sh status
输出示例:
Mode: leader
或
Mode: follower
/opt/zookeeper/bin/zkCli.sh -server zk1:2181
执行:
ls /
cat > /etc/systemd/system/zookeeper.service <<EOF
[Unit]
Description=ZooKeeper
After=network.target
[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable zookeeper
systemctl start zookeeper
myid 是否匹配2888 / 3888 端口是否通tail -f /opt/zookeeper/bin/../logs/zookeeper-*.out
如果你需要:
可以继续问我。