Zookeeper 的安装
下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper
首先从官网下载ZooKeeper压缩包,然后解压下载得到的ZooKeeper压缩包,发现有“bin,conf,lib”等目录。“bin目录”中存放有运行脚本;“conf目录”中存放有配置文件;“lib目录”中存放有运行所需要第三方库。
解压文件:
tar zxvf zookeeper-3.4.8.tar.gz
Zookeeper 的配置
一、单机模式
1.1、编辑配置文件
在“conf”目录下,新建一个名为“zoo.cfg”的文件,其中内容如下:
-
tickTime=
2000
-
dataDir=
/usr/myenv
/zookeeper
-3.4
.8
/data (填写自己的data目录)
-
dataLogDir=
/usr/myenv
/zookeeper
-3.4
.8
/logs
-
clientPort=
2181
参数说明:
-
#tickTime:
zookeeper中使用的基本时间单位, 毫秒值.
-
#dataDir: 数据目录. 可以是任意目录.
-
#dataLogDir:
log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和
#dataDir相同的设置.
-
#clientPort: 监听
client连接的端口号.
1.2、运行ZooKeeper Server
执行./bin/zkServer.sh start命令,运行ZooKeeper Server进程,得到如图所示结果,表示后台运行ZooKeeper Server进程成功。
注:命令telnet 127.0.0.1 2181 连接成功验证Zookeeper 是否启动成功
停止:./bin/zkServer.sh stop
也可以执行bin/zkServer.sh start-foreground命令,非后台运行ZooKeeper Server进程
二、集群模式
集群模式有两种形式:
1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;
2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。
在生产环境中,一般使用第一种形式,在练习环境中,一般使用第二种形式。
2.1、参数配置
集群模式下,需要配置一些参数,以下是常见的一些参数。
- data目录
用于存放进程运行数据。 - data目录下的myid文件
用于存储一个数值,用来作为该ZooKeeper Server进程的标识。 - 监听Client端请求的端口号
- 监听同ZooKeeper集群内其他Server进程通信请求的端口号
- 监听ZooKeeper集群内“leader”选举请求的端口号
该端口号用来监听ZooKeeper集群内“leader”选举的请求。注意这个是ZooKeeper集群内“leader”的选举,跟分布式应用程序无关。
参数配置注意事项:
1)同一个ZooKeeper集群内,不同ZooKeeper Server进程的标识需要不一样,即myid文件内的值需要不一样
2)采用上述第2种形式构建ZooKeeper集群,需要注意“目录,端口号”等资源的不可共享性,如果共享会导致ZooKeeper Server进程不能正常运行,比如“data目录,几个监听端口号”都不能被共享
myid | Data目录 | Client | Server | Leader | 配置文件 |
---|---|---|---|---|---|
1 | /z1/data | 2181 | 2222 | 2223 | z1.cfg |
2 | /z2/data | 2182 | 3333 | 3334 | z2.cfg |
3 | /z3/data | 2183 | 4444 | 4445 | z3.cfg |
配置如下:
-
# zx.cfg
-
tickTime=
2000
-
initLimit=
10
-
syncLimit=
2
-
dataDir=/usr/myenv/zookeeper
-
3.4
.8/zx/data
-
clientPort=
218x
-
#
server.x中的“x”表示ZooKeeper
Server进程的标识
-
server
.1=
127.0
.0
.1:
2222:
2225
-
server
.2=
127.0
.0
.1:
3333:
3335
-
server
.3=
127.0
.0
.1:
4444:
4445
注:
- initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
- syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
2.2、运行ZooKeeper Server
分别执行
-
bin/zkServer
.sh
start deploy/z1/z1.cfg,
-
bin/zkServer
.sh
start deploy/z2/z2
.cfg
-
bin/zkServer
.sh
start deploy/z3/z3.cfg
运行上述配置的3个ZooKeeper Server进程。
2.3、运行ZooKeeper命令行客户端
执行命令
bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
建立ZooKeeper Client端到ZooKeeper集群的连接会话。