下面以 CentOS 7/8 为例,说明 ZooKeeper 集群(3 节点) 的部署步骤。这是生产环境最常见的最小集群规模(奇数节点)。
假设 3 台 CentOS 服务器:
| 主机名 | IP |
|---|---|
| zk1 | 192.168.1.11 |
| zk2 | 192.168.1.12 |
| zk3 | 192.168.1.13 |
建议配置 hosts(三台都做):
cat >> /etc/hosts <<EOF
192.168.1.11 zk1
192.168.1.12 zk2
192.168.1.13 zk3
EOF
# 关闭防火墙(或放行 2181/2888/3888)
systemctl stop firewalld
systemctl disable firewalld
# 安装 JDK(ZooKeeper 依赖 Java)
yum install -y java-1.8.0-openjdk
java -version
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
每台机器写入不同 ID:
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
正常应看到:
leaderfollower/opt/zookeeper/bin/zkCli.sh -server zk1:2181
create /test hello
get /test
在 zk2 / zk3 上也能 get /test,说明集群同步正常。
创建 /etc/systemd/system/zookeeper.service:
[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-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable zookeeper
/opt/zookeeper/logs如果你需要:
可以继续问我。