02 | zookeeper 配置和集群搭建

zookeeper-3.7.0 配置与部署官方文档

基础配置说明

Zookeeper 提供了一个简单的配置文件示例:zoo_simple.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=/tmp/zookeeper
# 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

zookeeper 启动的时候默认会去加载 conf 目录下的 zoo.cfg 这个配置文件

zookeeper 可以指定配置文件启动,就是启动命令后面接配置文件路径,eg:zkServer.sh start ../conf/zoo_sample.cfg

参数说明

配置项 说明
tickTime 默认值 2000,单位 ms,必要配置
心跳检测时间间隔
也是 zookeeper 中的基本时间单位,关于时间配置该是该配置的倍数
initLime 默认值 5,代表5次心跳,也就是 5 * 2000 ms
初始通信时限,集群中的 follower 节点与 leader 节点之间初始连接时限
syncLimit 默认值 2
同步时限,follower 节点超过该时限未与 leader 通信,则认为该节点下线
dataDir 默认值 /tmp/zookeeper,必要配置
保存数据的目录,默认情况下也是事务日志的存储目录
zookeeper 的数据以类目录树的结构存储,每间隔一段时间生成快照(shapshot)
clientPort 默认值 2181,必要配置
监听客户端连接的端口

zookeeper 集群搭建

zookeeper 有三种搭建模式:

集群的搭建注意 clientPortdataDirdataLogDir的配置保持区分

dataLogDir:事务日志的存储目录,默认在 dataDir 配置的目录下。配置后可以有效避免数据快照与日志记录之间的竞争,所以建议配置

在上述配置文件的基础上添加集群节点的相关配置:

# 格式:server.id=host:port1:port2
# 其中 id 为server id,对应myid
# host 为 ip 或主机名称
# port1 为用于 followers 连接到 leader 的端口
# port2 为 leader 选举时使用的端口
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

在对应 zookeeper 实例配置文件中的 dataDir 目录下创建 myid 文件并记录对应的 server id,以 server.1 为例:

echo "1" > /usr/local/zookeeper/data1/myid

完整的配置文件示例如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data1
dataLogDit=/usr/local/zookeeper/log1

clientPort=2181

server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

多个 zookeeper 实例的配置文件一定要区分 clientPortdataDirdataLogDir

最后,逐一指定配置文件启动 zookeeper 实例即可

更细致的配置参数可以参考官方文档

你可能感兴趣的