mac下安装及使用zookeeper

安装zookeeper

1.下载zookeeper

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/

2.解压,在conf目录下创建并配置zoo.cfg文件

文件内容如下:

# The number of milliseconds of each tick

tickTime=2000

# 配置leader节点和follower节点启动并且完成数据同步的时间

initLimit=10

# leader节点和follower节点心跳检测的最大延迟时间

syncLimit=5

# 存储快照的目录

dataDir=/tmp/zookeeper/data

# 对外暴露的端口

clientPort=2181

3.到安装目录的bin目录运行 启动zookeeper

./zookeeper.sh start

4.停止zookeeper

./zookeeper.sh stop

5.前台启动zookeeper,方便查看日志

zkServer.sh start-foreground

6.zookeeper集群

Zookeeper 不仅可以单机提供服务,同时也支持多机组成集群来提供服务。实际上 Zookeeper 还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个 Zookeeper 实例,下面将介绍集群模式的安装和配置。

Zookeeper 的集群模式的安装和配置也不是很复杂,所要做的就是增加几个配置项。集群模式除了上面的三个配置项还要增加和修改下面几个配置项:

initLimit=5

syncLimit=3

server.1=localhost:2888:3888

server.2=localhost:2889:3889

server.3=localhost:2890:3890

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

server.<id>=<ip>:<port1>:<port2>

其中 

id是一个数字,表示这个是第几号服务器;

ip 是这个服务器的 ip 地址;

port1 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

port2 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 ip 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 id 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

7.集群实现代码

将zoo_sample.cfg 拷贝3分 zoo1.cfg,zoo2.cfg,zoo3.cfg   ******************************************************************

1).zoo1.cfg: 

# The number of milliseconds of each tick

tickTime=2000

# 配置leader节点和follower节点启动并且完成数据同步的时间

initLimit=10

# leader节点和follower节点心跳检测的最大延迟时间

syncLimit=5

# 存储快照的目录

dataDir=/tmp/zookeeper/data1

# 对外暴露的端口

clientPort=2181

server.1=localhost:2888:3888

server.2=localhost:2889:3889

server.3=localhost:2890:3890

2).zoo2.cfg 

# The number of milliseconds of each tick

tickTime=2000

# 配置leader节点和follower节点启动并且完成数据同步的时间

initLimit=10

# leader节点和follower节点心跳检测的最大延迟时间

syncLimit=5

# 存储快照的目录

dataDir=/tmp/zookeeper/data2

# 对外暴露的端口

clientPort=2182

server.1=localhost:2888:3888

server.2=localhost:2889:3889

server.3=localhost:2890:3890

3)zoo3.cfg 

# The number of milliseconds of each tick

tickTime=2000

# 配置leader节点和follower节点启动并且完成数据同步的时间

initLimit=10

# leader节点和follower节点心跳检测的最大延迟时间

syncLimit=5

# 存储快照的目录

dataDir=/tmp/zookeeper/data3

# 对外暴露的端口

clientPort=2183

server.1=localhost:2888:3888

server.2=localhost:2889:3889

server.3=localhost:2890:3890

分别在 /data,data1,data2,下建立myid 文件,内容分别是1,2,3

启动zookeeper服务

分别启动1,2,3:

./zkServer.sh start zoo1.cfg

./zkServer.sh start zoo2.cfg

./zkServer.sh start zoo3.cfg

前面两个起的时候可能会有错误提示:

这个可以不用管,等服务都起来之后就不会有这个提示了

推荐阅读更多精彩内容