ZooKeeper安装&集群配置(二)

下载

  • https://zookeeper.apache.org/releases.html

单机

  • apache-zookeeper-3.6.1-bin.tar.gz下载后解压, 将 conf/zoo_sample.cfg文件, 命名为 conf/zoo.cfg

单机配置


# 此应用的所有时间都以这个时间为单位(毫秒), 如 session的最小超时时间2*tickTime
tickTime=2000

# Leader限制, 在 Follower启动过程中同步数据的时间, 要求 initLimit时间内完成, 否则连接失败. 默认为10*ticktime
initLimit=10

# Leader与 Follower之间的请求和应答时间长度. 如指定 Follower在设定的时间内不能与Leader进行通信, 那么此 Follower将被丢弃. 默认为5*ticktime
syncLimit=5

# 快照文件存储目录, 快照数据文件名为:snapshot.x, (x是 Zxid)
dataDir=/Users/quanchunlin/Desktop/zookeeper-3.6.1/data

# 事务日志存储目录, 当客户端请求事务时, 在未收到成功响应前, 会将事务操作写入到磁盘上. 如不设置, 默认事务日志与快照文件存在同一个目录, 建议分开设置
dataLogDir=/Users/quanchunlin/Desktop/zookeeper-3.6.1/logs

# 提供给客户端链接的服务端口
clientPort=2181

# 限制单个客户端和单台服务器之间的最大并发连接数, 即以 IP地址粒度来进行连接数的限制, 如果为0 表示不作限制, 默认为60
maxClientCnxns=60

# 设置保留多少个 snapshot文件
#autopurge.snapRetainCount=3

# 设置多少小时清理一次 snapshot文件, 如果为0 表示禁用自动清除功能 
#autopurge.purgeInterval=1

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

单机启动

  • bin/zkServer.sh start

zenshunrins-MacBook-Air:zookeeper-3.6.1 quanchunlin$ bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /Users/quanchunlin/Desktop/zookeeper-3.6.1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

客户端连接

  • bin/zkCli.sh
...
2020-08-02 20:53:09,287 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1420] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x100049502990000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 

集群

  • 从容错率和防止脑裂两方面考虑节点个数最好是奇数. 按奇数搭建集群最小单位为 3个, 5, 7…

Windows单机集群配置

  • 复制三个 ZooKeeper

# server1\conf\zoo.cfg
dataDir=D:/Program Files/zookeeper-3.6.1/server1/data
dataLogDir=D:/Program Files/zookeeper-3.6.1/server1/logs
clientPort=2181
server.1=0.0.0.0:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

# server2\conf\zoo.cfg
dataDir=D:/Program Files/zookeeper-3.6.1/server2/data
dataLogDir=D:/Program Files/zookeeper-3.6.1/server2/logs
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=0.0.0.0:2888:3888
server.3=127.0.0.1:2889:3889

# server3\conf\zoo.cfg
dataDir=D:/Program Files/zookeeper-3.6.1/server3/data
dataLogDir=D:/Program Files/zookeeper-3.6.1/server3/logs
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=0.0.0.0:2889:3889

# server.A=B:C:D
# A: 整数值, 表示服务器编号
# B: 服务器 ip地址
# C: Leader选举的端口
# D: Zookeeper服务器之间的通信端口

  • 每个 server\data目录内生成一个 myid文件: 内容只写入服务编号, 如果目录是 server1\data输入1, server2\data就是2

服务器启动


# 启动服务
server1/bin/zkServer.cmd # Linux时 bin/zkServer.sh [start/restart/stop/status]
server2/bin/zkServer.cmd
server3/bin/zkServer.cmd

客户端本地连接& 远程连接


server3/bin/zkCli.cmd -server 127.0.0.1:2181 create /test-key "test-value"
- Created /test-key
server1/bin/zkCli.cmd -server 127.0.0.1:2182 get /test-key
- test-value
server2/bin/zkCli.cmd -server 127.0.0.1:2183 ls /
- [test-key, zookeeper]

如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!

猜你喜欢

转载自blog.csdn.net/qcl108/article/details/107772044