下面以 CentOS 7/8 为例,一步步说明如何部署 ZooKeeper 集群(3 节点)。
假设有 3 台服务器:
| 主机名 | IP |
|---|---|
| zk1 | 192.168.1.11 |
| zk2 | 192.168.1.12 |
| zk3 | 192.168.1.13 |
ZooKeeper 集群建议 奇数节点(3/5/7)
每台机器执行:
# 关闭防火墙(生产环境建议开放端口)
systemctl stop firewalld
systemctl disable firewalld
# 安装 Java(ZooKeeper 依赖)
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 示例(3 节点通用):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888
每台机器 myid 不同
# 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 192.168.1.11:2181
create /test hello
get /test
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
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable zookeeper
tail -f /opt/zookeeper/logs/zookeeper-*.out
如果你需要:
可以继续问我。