部分内容参考并摘自:https://blog.csdn.net/isHarry/article/details/81778193
一、单机模式
单机只部署一个zookeeper进程,客户端直接与其通信。在开发环境中一般用单机模式。但是在生产环境中,无论从可靠性还是读写性能都无法满足需求。1、下载
https://archive.apache.org/dist/zookeeper/
或 下载
https://zookeeper.apache.org/releases.html
2、解压 并创建目录 data及log
3、复制 C:\apache-zookeeper-3.8.0-bin\conf\zoo_sample.cfg 并命名zoo.cfg
4、修改参数
dataDir dataLogDir
5、打开 C:\apache-zookeeper-3.8.0-bin\bin\zkServer.cmd
zkcli.cmd连接
可以配置参数 zkcli.cmd -server 127.0.0.1:2181
zoo.cfg中的参数详细介绍:
tickTime=2000 #zookeeper的时间配置中的基本单位(毫秒)
initLimit=10 #允许follower初始化连接到leader最大时间,它表示tickTime时间的倍数,即initLimit*tickTime
syncLimit=5 #允许follower与leader数据同步最大时长,它表示tickTime时间倍数,即syncLimit*tickTime
dataDir=/tmp/zookeeper #zookeeper数据存储目录,必须配置。如果没有配置dataLogDir,那么事务日志也会存储在此目录 #C:/apache/data
# 其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1-255之间的数字,这个数字即上面介绍的server.id中的id,表示zk进程的id。
clientPort=2181 #服务端的监听端口
maxClientCnxns=60 #单个客户端与zookeeper最大并发连接数
autopurge.snapRetainCount=3 #保存的数据快照数量,之外的将会被清除
autopurge.purgeInterval=1 #自动触发清除任务时间间隔,小时为单位,默认为0,表示不自动清除。
server.id=host:port1:port2 #其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下的myid文件的内容,host是该zk进程所在的ip地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader时所使用的端口。
windows下启动用cmd格式的命令,linux下用sh格式的命令。
二、集群模式
单机模式zk便于开发与测试,但并不适合生产环境使用。生产环境下我们需要用集群,集群最少需要3个zk进程,或者部署奇数个zk进程。至于原因,前面章节已经有说明。2.1运行配置
在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面)。如下配置tickTime=2000
dataDir=C:/apache-zookeeper-3.8.0-bin/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.88.151:2888:3888
server.2=192.168.88.152:2888:3888
server.3=192.168.88.153:2888:3888
2.2启动
假如我们打算在三台不同的机器192.168.88.151、192.168.88.152、192.168.88.153上各部署一个zk进程,以构成一个zk集群。三个zk进程均使用相同的zoo.cfg配置。 在三台机器的dataDir目录下,分别生成一个myid文件,其内容分别为1、2、3。然后分别在这三台机器上启动zk进程,这样我们便将zk集群启动了起来。2.3连接
可以使用命令来连接一个zk集群 zkCli.cmd -server 192.168.88.151:2181,192.168.88.152:2181,192.168.88.153:2181三、伪集群模式
3.1修改zoo.cfg
复制zoo_sample.cfg为zoo.cfg并修改参数 ,将文件另存为zoo1.cfg 。tickTime=2000
dataDir=C:/apache-zookeeper-3.8.0-bin/data/d1
clientPort=2181
initLimit=5
syncLimit=2
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
修改参数,将文件另存为zoo2.cfg
tickTime=2000
dataDir=C:/apache-zookeeper-3.8.0-bin/data/d2
clientPort=2182
initLimit=5
syncLimit=2
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
修改参数,将文件另存为zoo3.cfg
tickTime=2000
dataDir=C:/apache-zookeeper-3.8.0-bin/data/d3
clientPort=2183
initLimit=5
syncLimit=2
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
3.2修改zkServer.cmd
修改参数,将文件另存为zkserver-1.cmd set ZOOCFG=..\conf\zoo1.cfg 修改参数,将文件别存为zkserver-2.cmd set ZOOCFG=..\conf\zoo2.cfg 修改参数,将文件别存为zkserver-3.cmd set ZOOCFG=..\conf\zoo3.cfg3.3运行zkserver-1.cmd、zkserver-2.cmd、zkserver-3.cmd
用netstat -ano查看端口的监听情况3.4运行zkcli.cmd
zkcli.cmd -server localhost:2181 zkcli.cmd -server localhost:2182 zkcli.cmd -server localhost:21833.5zookeeper与java的连接
摘自:https://blog.csdn.net/isHarry/article/details/81778193
单机连接:
集群连接: