Linux环境下部署Zookeeper3.9.5(最新版)集群部署
官网地址:Apache ZooKeeper
最新版本:3.9.5 发布时间6 Mar, 2026
软件下载地址
Apache Download Mirrors
1、解压
cd /usr/local/soft/ tar -zxvf apache-zookeeper-3.9.5-bin.tar.gz2、创建数据文件和目录文件
在zookeeper的跟目录下创建两个文件夹data和log
cd /usr/local/soft/apache-zookeeper-3.9.5-bin/ mkdir data mkdir log3、拷贝配置文件
cd /usr/local/soft/apache-zookeeper-3.9.5-bin/conf/ cp zoo_sample.cfg zoo.cfg配置文件更改
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/soft/apache-zookeeper-3.9.5-bin/data dataLogDir=/usr/local/soft/apache-zookeeper-3.9.5-bin/log # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1=node11:2888:3888 server.2=node12:2888:3888 server.3=node13:2888:3888 ## Metrics Providers # # https://prometheus.io Metrics Exporter #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider #metricsProvider.httpHost=0.0.0.0 #metricsProvider.httpPort=7000 #metricsProvider.exportJvmInfo=true4、创建服务器myid
在data目录下创建一个myid的文件,里面的值可以给个任意的值,但要和上述服务起server.x对应
cd /usr/local/soft/apache-zookeeper-3.9.5-bin/data/ touch myid内容添加1
集群系统环境变量添加:vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/soft/apache-zookeeper-3.9.5-bin export PATH=$PATH:$ZOOKEEPER_HOME/bin保存系统环境变量:source /etc/profile
5、集群拷贝
拷贝文件
scp -r /usr/local/soft/apache-zookeeper-3.9.5-bin root@node12:/usr/local/soft/apache-zookeeper-3.9.5-bin scp -r /usr/local/soft/apache-zookeeper-3.9.5-bin root@node13:/usr/local/soft/apache-zookeeper-3.9.5-bin拷贝环境变量
scp /etc/profile root@node12:/etc/profile scp /etc/profile root@node13:/etc/profile6、集群myid更改
进入到每个节点,修改/usr/local/soft/apache-zookeeper-3.9.5-bin/data/myid值
vi /usr/local/soft/apache-zookeeper-3.9.5-bin/data/myid其中node12节点中myid文件内容改成2
其中node13节点中myid文件内容改成3
并执行
source /etc/profile关闭集群防火墙
7、集群启动(推荐8)
进入到每个节点启动
cd /usr/local/soft/apache-zookeeper-3.9.5-bin bin/zkServer.sh start bin/zkServer.sh status8、集群设置脚本启动
cd /usr/local/soft/apache-zookeeper-3.9.5-bin/bin/执行文件创建及授权
创建文件
touch zkStart.sh touch zkStop.sh touch zkStatus.sh授权
chmod +x zkStart.sh chmod +x zkStop.sh chmod +x zkStatus.shzkStart.sh中添加
#!/bin/bash echo "zookeeper start 11,12,13..." ssh node11 "source /etc/profile;zkServer.sh start" ssh node12 "source /etc/profile;zkServer.sh start" ssh node13 "source /etc/profile;zkServer.sh start"zkStop.sh中添加
#!/bin/bash echo "zookeeper start 11,12,13..." ssh node11 "source /etc/profile;zkServer.sh stop" ssh node12 "source /etc/profile;zkServer.sh stop" ssh node13 "source /etc/profile;zkServer.sh stop"zkStatus.sh中添加
#!/bin/bash echo "zookeeper start 11,12,13..." ssh node11 "source /etc/profile;zkServer.sh status" ssh node12 "source /etc/profile;zkServer.sh status" ssh node13 "source /etc/profile;zkServer.sh status"9、启动集群
集群启动:zkStart.sh
集群关闭:zkStop.sh
集群状态查看:zkStatus.sh
验证集群启动情况
注意启动的时候出现Client SSL: false.这并不是错误。可以忽略
在 ZooKeeper 中,启动时看到 "Client SSL: false" 的信息,意味着 ZooKeeper 服务器没有启用客户端 SSL/TLS 加密。这意味着客户端与 ZooKeeper 服务器之间的通信不是加密的,这可能会带来安全风险,尤其是在生产环境中。学习阶段可以不用配置,如果配置了会导致后续连接复杂,不建议配置,如果想配置可参考本文FAQ 问题2
10、zkCli连接验证
zkCli.sh -server 192.168.1.11:2181FAQ
1、-bash: /usr/local/soft/apache-zookeeper-3.9.5-bin/bin/zkStop.sh: /bin/bash^M: bad interpreter: No such file or directory
sudo yum install dos2unix cd /usr/local/soft/apache-zookeeper-3.9.5-bin/bin/ dos2unix zkStart.sh dos2unix zkStop.sh dos2unix zkStatus.sh2、启动脚本被占用
/bin/bash: bad interpreter: Text file busy解决办法:
fuser 命令名称
找到进程号,kill查杀
3、Client SSL: false解析
在 ZooKeeper 中,启动时看到 "Client SSL: false" 的信息,意味着 ZooKeeper 服务器没有启用客户端 SSL/TLS 加密。这意味着客户端与 ZooKeeper 服务器之间的通信不是加密的,这可能会带来安全风险,尤其是在生产环境中。
如果你希望启用客户端 SSL/TLS 加密来增强安全性,你需要进行以下几步操作(初学者不建议操作):
具体可参照:zookeeper开启ssl_清晨的技术博客_51CTO博客
生成密钥库和信任库:
你需要生成一个 Java 密钥库(keystore)来存储服务器的私钥和证书,以及一个信任库(truststore)来存储客户端信任的 CA 证书。这些证书可以是自签名的,也可以是由受信任的证书颁发机构(CA)签发的。配置 ZooKeeper 服务器:
在 ZooKeeper 的配置文件(通常是zoo.cfg)中,你需要设置几个属性来启用 SSL。这些属性包括secureClientPort(一个用于 SSL/TLS 通信的端口号,通常是不同于非加密通信的端口),ssl.keystore.location(密钥库的路径),ssl.keystore.password(访问密钥库的密码),ssl.truststore.location(信任库的路径),以及ssl.truststore.password(访问信任库的密码)。
secureClientPort=2182
ssl.keystore.location=/path/to/keystore.jks
ssl.keystore.password=keystore_password
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=truststore_password
