ZooKeeper详解1.安装及使用

一年又一年,字节跳动 Lark(飞书) 研发团队又双叒叕开始招新生啦!
【内推码】:GTPUVBA
【内推链接】:https://job.toutiao.com/s/JRupWVj
【招生对象】:20年9月后~21年8月前 毕业的同学
【报名时间】:6.16-7.16(提前批简历投递只有一个月抓住机会哦!)
【画重点】:提前批和正式秋招不矛盾!面试成功,提前锁定Offer;若有失利,额外获得一次面试机会,正式秋招开启后还可再次投递。

1 ZooKeeper简介

ZooKeeper是一个开源分布式应用程序协调服务,最初是作为Hadoop的一个副产品,但现在已经成为分布式应用的一个重要组件,像Hadoop、Dubbo、Kafka都是基于ZooKeeper构建的。
官方文档
ZooKeeper 3.4 Documentation

2 ZooKeeper安装

Mac安装

brew install zookeeper

启动和关闭

ZooKeeper提供了zkServer来管理ZooKeeper,默认使用/usr/local/etc/zookeeper/zoo.cfg配置文件中的配置来启动,主要命令如下:

  • 启动:zkServer start [配置文件]
  • 关闭:zkServer stop [配置文件]
  • 重启:zkServer restart [配置文件]
  • 查看状态:zkServer status [配置文件]
# 其他命令如下
Using config: /usr/local/etc/zookeeper/zoo.cfg
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
配置文件详解

ZooKeeper 配置文件(zoo.cfg)详解

# 心跳时间
# Leader与Follower之间发送消息时,请求和应答时间长度。
tickTime=2000
# Follower与Leader初始连接时能容忍的最多心跳数
initLimit=10
# Follower与Leader请求和答应最多能容忍的心跳数   
syncLimit=5
# 存放myid、版本、日志等信息
dataDir=/usr/local/var/run/zookeeper/data
# 客户端连接的端口
clientPort=2181
# 最大连接数
# maxClientCnxns=60

# 指定了需要保留的文件数目。默认是保留3个。
# autopurge.snapRetainCount=3

# 3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能
# 这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。
# autopurge.purgeInterval=1

3 ZooKeeper集群搭建

修改配置文件
  1. 在zoo.cfg的目录下增加3个配置文件,分别命名为cluster_zoo1.cfg、cluster_zoo2.cfg、cluster_zoo3.cfg(随便起名字也可以)。
  2. 编辑配置文件,分别修改其端口和dataDir,保证三个文件使用不同的端口和dataDir目录。
  3. 增加集群配置。
# cluster_zoo1.cfg配置文件内容
dataDir=/usr/local/var/run/zookeeper/cluster_data_1
clientPort=2182
# server.A=B:C:D
# A:其中 A 是一个数字,表示这个是服务器的编号;
# B:是这个服务器的 ip 地址;
# C:Leader选举的端口;
# D:Zookeeper服务器之间的通信端口。
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
# cluster_zoo1.cfg配置文件内容
dataDir=/usr/local/var/run/zookeeper/cluster_data_2
clientPort=2183
# server.A=B:C:D
# A:其中 A 是一个数字,表示这个是服务器的编号;
# B:是这个服务器的 ip 地址;
# C:Leader选举的端口;
# D:Zookeeper服务器之间的通信端口。
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
# cluster_zoo3.cfg配置文件内容
dataDir=/usr/local/var/run/zookeeper/cluster_data_3
clientPort=2184
# server.A=B:C:D
# A:其中 A 是一个数字,表示这个是服务器的编号;
# B:是这个服务器的 ip 地址;
# C:Leader选举的端口;
# D:Zookeeper服务器之间的通信端口。
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
配置myid的文件

myid文件配置在dataDir的目录下,该文件里面只有一个数据就是server.A=B:C:D中A的值,ZooKeeper启动时会读取这个文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是那个server。

/usr/local/var/run/zookeeper > echo 1 > cluster_data_1/myid
/usr/local/var/run/zookeeper > echo 2 > cluster_data_2/myid
/usr/local/var/run/zookeeper > echo 3 > cluster_data_3/myid
使用三个配置文件分别启动
/usr/local/etc/zookeeper > zkServer start cluster_zoo1.cfg
/usr/local/etc/zookeeper > zkServer start cluster_zoo2.cfg
/usr/local/etc/zookeeper > zkServer start cluster_zoo3.cfg
查看集群状态
# 节点1
/usr/local/etc/zookeeper   master > zkServer status cluster_zoo1.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/cluster_zoo1.cfg
Mode: follower
# 节点2
/usr/local/etc/zookeeper   master > zkServer status cluster_zoo2.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/cluster_zoo2.cfg
Mode: leader
# 节点3
/usr/local/etc/zookeeper   master > zkServer status cluster_zoo3.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/cluster_zoo3.cfg
Mode: follower
连接集群
/usr/local/etc/zookeeper > zkCli -server localhost:2182,localhost:2183,localhost:214
Connecting to localhost:2182,localhost:2183,localhost:214
Welcome to ZooKeeper!
JLine support is enabled
[zk: localhost:2182,localhost:2183,localhost:214(CONNECTING) 0]
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

你可能感兴趣的:(ZooKeeper详解1.安装及使用)