官网下载
zookeeper 官网 :https://zookeeper.apache.org/releases.html
随便选一个版本
下载apache-zookeeper-3.6.1-bin.tar.gz
解压打开
配置属性
在conf文件夹下复制zoo_sample.cfg,改名为zoo.cfg
修改属性:把dataDir、dataLogDir改成自己的文件夹(前面解压的目录)
# 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=E:/zookeeper/apache-zookeeper-3.6.1-bin/data
dataLogDir=E:/zookeeper/apache-zookeeper-3.6.1-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.
#
# http://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
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
其中:
- tickTime - CS通信心跳时间
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。
- initLimit
初始化:集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量:10 * 2 = 20s)。
如果20s内没连上就当作服务器挂了
- syncLimit
初始连接后,集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数(5 * 2 = 10s)
- dataDir
保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里
(会自动创建文件夹)
Windows启动
bin文件夹下有windows的cmd命令
- 点击zkServer(cmd的那个)
- 也可以通过client判断是否启动成功
默认端口是2181,可以通过coo.cfg修改clientPort
IDEA查看zookeeper
- 安装zookeeper插件
- 重启IDEA,可以看到settings里多了给Zookeeper
勾选Enable ZooKeeper,就可以在侧边栏看到ZooKeeper
这里什么都没配置,所以就这一个
伪集群设置
伪集群就是一台机器搭建多个zookeeper,每个zookeeper分别使用不同的配置文件zoo.cfg来启动模拟集群
关键设置为:
server.1=zoo1:2888:3888
server.2=zoo1:2888:3888
server.3=zoo1:2888:3888
- 1、2、3为对应的zookeeper集群节点序号,zoo1为ip地址
- 第一个端口2888是节点连接其他节点的端口,用于节点间通信,例如leader与follower
- 第二个端口3888是集群选举leader的端口
- 两个端口可以随便设置
配置
- 复制多份zookeeper文件夹
- 修改配置文件coo.cfg
还有dataDir对应好,还有把clientPort改一下
zookeeper:
dataDir=E:/zookeeper/zookeeper/data
dataLogDir=E:/zookeeper/zookeeper/log
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zookeeper2:
dataDir=E:/zookeeper/zookeeper2/data
dataLogDir=E:/zookeeper/zookeeper2/log
clientPort=2182
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zookeeper3:
dataDir=E:/zookeeper/zookeeper3/data
dataLogDir=E:/zookeeper/zookeeper3/log
clientPort=2183
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
- 配置server.id
- 新建myid文件(没有后缀),内容为对应的序号
- 启动三个zookeeper
正常启动,选举一个Leader,两个Follower