千家信息网

ZooKeeper集群怎样安装和部署

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"ZooKeeper集群怎样安装和部署",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ZooKeeper集群怎样安装和部署"这篇文章
千家信息网最后更新 2026年11月02日ZooKeeper集群怎样安装和部署

这篇文章主要为大家展示了"ZooKeeper集群怎样安装和部署",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ZooKeeper集群怎样安装和部署"这篇文章吧。

0、ZooKeeper还可以用作其他用途,例如:

数据发布与订阅(配置中心)
负载均衡
命名服务(Naming Service)
分布式通知/协调
集群管理与Master选举
分布式锁
分布式队列
1、介绍与系统要求
ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境。
系统 开发环境 生产环境
Linux 支持 支持
Solaris 支持 支持
FreeBSD 支持 支持
Windows 支持 不支持
MacOS 支持 不支持

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。

■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;
■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;
■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个"集合体"(ensemble)

Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。
所以ZooKeeper集群模式的部署,3个ZooKeeper服务进程是建议的最小进程数量,而且不同的服务进程建议部署在不同的物理机器上面,以减少机器宕机带来的风险,以实现ZooKeeper集群的高可用。
ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。为了正常运行zk,我们需要JRE1.6或者以上的版本。ZooKeeper对于机器的硬件配置没有太大的要求。

2、下载安装
可以从https://zookeeper.apache.org/releases.html下载ZooKeeper,目前最新的稳定版本为 3.4.11 版本,我们今天选择3.4.10版本。
# tar zvxf zookeeper-3.4.10.tar.gz
# mv zookeeper-3.4.10 ../zk
# cd ../zk
[root@galera01 zk]# ls -l
drwxr-xr-x 2 1001 1001 4096 Mar 23 2017 bin
-rw-rw-r-- 1 1001 1001 84725 Mar 23 2017 build.xml
drwxr-xr-x 2 1001 1001 4096 Mar 23 2017 conf
drwxr-xr-x 10 1001 1001 4096 Mar 23 2017 contrib
drwxr-xr-x 2 1001 1001 4096 Mar 23 2017 dist-maven
drwxr-xr-x 6 1001 1001 4096 Mar 23 2017 docs
-rw-rw-r-- 1 1001 1001 1709 Mar 23 2017 ivysettings.xml
-rw-rw-r-- 1 1001 1001 5691 Mar 23 2017 ivy.xml
drwxr-xr-x 4 1001 1001 4096 Mar 23 2017 lib
-rw-rw-r-- 1 1001 1001 11938 Mar 23 2017 LICENSE.txt
-rw-rw-r-- 1 1001 1001 3132 Mar 23 2017 NOTICE.txt
-rw-rw-r-- 1 1001 1001 1770 Mar 23 2017 README_packaging.txt
-rw-rw-r-- 1 1001 1001 1585 Mar 23 2017 README.txt
drwxr-xr-x 5 1001 1001 4096 Mar 23 2017 recipes
drwxr-xr-x 8 1001 1001 4096 Mar 23 2017 src
-rw-rw-r-- 1 1001 1001 1456729 Mar 23 2017 zookeeper-3.4.10.jar
-rw-rw-r-- 1 1001 1001 819 Mar 23 2017 zookeeper-3.4.10.jar.asc
-rw-rw-r-- 1 1001 1001 33 Mar 23 2017 zookeeper-3.4.10.jar.md5
-rw-rw-r-- 1 1001 1001 41 Mar 23 2017 zookeeper-3.4.10.jar.sha1


bin目录:zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。
conf目录:配置文件目录。zoo_sample.cfg为样例配置文件,log4j.properties为日志配置文件。
lib目录:zk依赖的包。
contrib目录:一些用于操作zk的工具包。
recipes目录:zk某些用法的代码示例


3、集群模式运行配置
单机模式的zk进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对zk进行部署。在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。
在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),例如如下配置:
# mkdir -p /opt/zkdata
# cd /opt/zk/conf
# cp zoo_sample.cfg zk.cfg
# vi zk.cfg
tickTime=2000
dataDir=/opt/zkdata
clientPort=2181
initLimit=5
syncLimit=2
server.0=192.168.56.111:2888:3888
server.1=192.168.56.112:2888:3888
server.3=192.168.56.113:2888:3888

设置选择配置文件的名字在zkEnv.sh文件里面,默认为zoo.cfg,这里已修改为zk.cfg

tickTime参数:tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
initLimit参数:ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。
initLimit配置follower与leader之间建立连接后进行同步的最长时间。
syncLimit参数:配置follower和leader之间发送消息,请求和应答的最大时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
maxClientCnxns参数:
这个操作将限制连接到Zookeeper的客户端数量,并限制并发连接的数量,通过IP来区分不同的客户端。此配置选项可以阻止某些类别的Dos攻击。将他设置为零或忽略不进行设置将会取消对并发连接的限制。
例如,此时我们将maxClientCnxns的值设为1,如下所示:
# set maxClientCnxns
maxClientCnxns=1
启动Zookeeper之后,首先用一个客户端连接到Zookeeper服务器上。之后如果有第二个客户端尝试对Zookeeper进行连接,或者有某些隐式的对客户端的连接操作,将会触发Zookeeper的上述配置。
minSessionTimeout和maxSessionTimeout参数:
即最小的会话超时和最大的会话超时时间。在默认情况下,minSession=2*tickTime;maxSession=20*tickTime。
server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
dataDir参数:该参数没有默认值,必须配置,其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。
myid文件的内容只有一行,且内容只能为1~255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。

# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Starting zookeeper ... STARTED

./zkCli.sh -server 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181


# ./zkCli.sh -server 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181
Connecting to 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181
2018-03-12 14:20:23,468 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2018-03-12 14:20:23,473 [myid:] - INFO [main:Environment@100] - Client environment:host.name=galera02
2018-03-12 14:20:23,473 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.7.0_45
2018-03-12 14:20:23,474 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45.x86_64/jre
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/opt/zk/bin/../build/classes:/opt/zk/bin/../build/lib/*.jar:/opt/zk/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zk/bin/../lib/slf4j-api-1.6.1.jar:/opt/zk/bin/../lib/netty-3.10.5.Final.jar:/opt/zk/bin/../lib/log4j-1.2.16.jar:/opt/zk/bin/../lib/jline-0.9.94.jar:/opt/zk/bin/../zookeeper-3.4.10.jar:/opt/zk/bin/../src/java/lib/*.jar:/opt/zk/bin/../conf:
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:os.version=2.6.32-431.el6.x86_64
2018-03-12 14:20:23,475 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2018-03-12 14:20:23,476 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2018-03-12 14:20:23,476 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/zk/bin
2018-03-12 14:20:23,477 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@6c8d5190
2018-03-12 14:20:23,494 [myid:] - INFO [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 192.168.56.113/192.168.56.113:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
2018-03-12 14:20:23,581 [myid:] - INFO [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@876] - Socket connection established to 192.168.56.113/192.168.56.113:2181, initiating session
JLine support is enabled
2018-03-12 14:20:23,868 [myid:] - INFO [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 192.168.56.113/192.168.56.113:2181, sessionid = 0x26218afe3bd0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181(CONNECTED) 0]

[zk: 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181(CONNECTED) 0] quit
Quitting...
2018-03-12 14:22:41,435 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x26218afe3bd0000
2018-03-12 14:22:41,436 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x26218afe3bd0000 closed


4、查看目前zk集群状态
[root@galera01 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: follower

[root@galera02 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: leader

[root@galera03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: follower
----------------------------------------------------------End------------------------------------------------

以上是"ZooKeeper集群怎样安装和部署"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

集群 配置 模式 进程 支持 环境 文件 目录 运行 参数 机器 服务 内容 客户 不同 客户端 时间 生产 之间 单机 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 互联网和科技技术 互联网电商科技 互联网科技有限公司图片 互联网金融与金融科技 西安互联网科技 互联网高科技企业 互联网前沿科技 衡水科技产业互联网平台 成都玖崟互联网科技有限公司乐商圈怎么样 互联网和黑科技的看法 厦门千工互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 威龙国际互联网科技公司 高科技互联网套路 中国互联网有什么科技 雨阳互联网卡科技有限公司 第三届互联网大会安防黑科技 山东蛋芒互联网科技有限公司 恒生互联网科技趋势 中资互联网科技 高科技与互联网 互联网科技公司有哪些 注册互联网科技公司经营范围大全 深圳市罗太互联网科技有限公司 山东有哪些互联网科技公司 有人说阿里系是互联网科技企业 江苏互联网科技小贷 互联网科技包装股 玉溪新华互联网科技怎么选
0