三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux环境下部署Zookeeper3.9.5(最新版)集群部署

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.gz

2、创建数据文件和目录文件

在zookeeper的跟目录下创建两个文件夹data和log

cd /usr/local/soft/apache-zookeeper-3.9.5-bin/ mkdir data mkdir log

3、拷贝配置文件

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=true

4、创建服务器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/profile

6、集群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 status

8、集群设置脚本启动

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.sh

zkStart.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:2181

FAQ

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.sh

2、启动脚本被占用

/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博客

  1. 生成密钥库和信任库:
    你需要生成一个 Java 密钥库(keystore)来存储服务器的私钥和证书,以及一个信任库(truststore)来存储客户端信任的 CA 证书。这些证书可以是自签名的,也可以是由受信任的证书颁发机构(CA)签发的。

  2. 配置 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

← 返回列表