0%

zookeeper部署

zookeeper部署

本地部署

修改zoo.cfg文件(在conf下)

1
2
#配置数据所在位置
dataDir=/opt/data/zookeeper/zkData

启动命令

1
zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}

可传入的参数有

  • start 后台启动zookeeper服务器
  • start-foreground 前台启动zookeeper服务器
  • stop 停止zookeeper服务器
  • restart 重启zookeeper服务器
  • status 获取zookeeper服务器运行状态
  • upgrade 升级zookeeper服务器
  • print-cmd 打印出zookeeper程序命令以及其相关参数

启动zookeeper服务示例

1
./zkServer.sh start

使用jps可以看到QuorumPeerMain

启动客户端

1
./zkCli.sh

配置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# The number of milliseconds of each tick
# Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔 tickTime时间就会发送一个心跳,单位毫秒,每次心跳2000毫秒
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
# 初始通信时限 集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限 总的时间长度为 initLimit*tickTime
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# 同步通信时限,集群中Leader与Follower之间的最大响应时间单位,假如响应超过该时间,Leader认为Follwer死掉,从服务器列表中删除Follwer 总的长度为 syncLimit*tickTime
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 用于保存Zookeeper中的快照数据
dataDir=/opt/data/zookeeper/zkData
# the port at which the clients will connect
# 客户端连接 Zookeeper 服务器的端口
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
# 默认使用的是dataDir配置,用于存储事务日志文件,默认会将事务日志文件和快照数据存储在同一个目录下,建议分开
# 事务日志记录对于磁盘性能要求比较高,直接决定了zookeeper在处理事务请求时的吞吐
dataLogDir=

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

集群分布式部署

单机本地部署只能在自己的电脑上随便玩玩,但是真正生产上为了安全可靠稳定,还是需要集群分布式部署的

配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
# 分布式部署特有的
# server.id=host:port:port
# id是在myid文件中填写的id编号,在集群中要唯一,需要在dataDir下创建一个myid的文件,内容为该节点的编号
# host为服务器地址
# 第一个port指的是该服务器与Leader通信的端口
# 第二个port指的是如果leader挂掉,用来执行选举时服务器相互通信的端口
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

在dataDir所在目录下创建myid的文件,其中写入单行的机器id,这个id在集群中必须是唯一的,在1~255之间

欢迎关注我的其它发布渠道