Zookeeper的安装和配置十分简单, 既能够配置成单机模式, 也能够配置成集群模式. 下面将分别进行介绍.git
下载zookeeper的安装包以后(http://mirror.bit.edu.cn/apache/zookeeper/), 解压到合适目录. 进入zookeeper目录下的conf子目录, 建立zoo.cfg:github
Bash代码 apache
tickTime=2000 并发
dataDir=/Users/apple/zookeeper/data app
dataLogDir=/Users/apple/zookeeper/logs spa
clientPort=4180 orm
参数说明:server
tickTime: 基本事件单元,以毫秒为单位,用来控制心跳和超时,默认状况超时的时间为两倍的tickTimeblog
dataDir: 数据目录. 能够是任意目录.进程
dataLogDir: log目录, 一样能够是任意目录. 若是没有设置该参数, 将使用和dataDir相同的设置.
clientPort: 监听client链接的端口号.
其余配置项:
maxClientCnxns 限制链接到zookeeper的客户端数量,而且限制并发链接数量,它经过ip区分不一样的客户端。
minSessionTimeout和maxSessionTimeout
最小会话超时时间和最大的会话超时时间,在默认状况下,最小的超时时间为2倍的tickTime时间,最大的会话超时时间为20倍的会话超时时间,系统启动时会显示相应的信息。默认为-1
initLimit
参数设定了容许全部跟随者与领导者进行链接并同步的时间,若是在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另外一次的领导选举。若是zk集群环境数量确实很大,同步数据的时间会变长,所以这种状况下能够适当调大该参数。默认为10
syncLimit
参数设定了容许一个跟随者与一个领导者进行同步的时间,若是在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。全部关联到这个跟随者的客户端将链接到另一个跟随着。
至此, zookeeper的单机模式已经配置好了. 启动server只需运行脚本:
Bash代码
bin/zkServer.sh start
Server启动以后, 就能够启动client链接server了, 执行脚本:
Bash代码
bin/zkCli.sh -server localhost:4180
所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.
将zookeeper的目录拷贝2份:
Bash代码
|--zookeeper0
|--zookeeper1
|--zookeeper2
更改zookeeper0/conf/zoo.cfg文件为:
Bash代码
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/Users/apple/zookeeper0/data
dataLogDir=/Users/apple/zookeeper0/logs
clientPort=4180
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
新增了几个参数, 其含义以下:
initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其他的server为follower. initLimit参数配置初始化链接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 因为配置的是伪集群模式, 因此各个server的B, C参数必须不一样.
参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort参数便可.
在以前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
/Users/apple/zookeeper0/data/myid文件中写入0, /Users/apple/zookeeper1/data/myid文件中写入1, /Users/apple/zookeeper2/data/myid文件中写入2.
分别进入/Users/apple/zookeeper0/bin, /Users/apple/zookeeper1/bin, /Users/apple/zookeeper2/bin三个目录, 启动server.
任意选择一个server目录, 启动客户端:
Bash代码
bin/zkCli.sh -server localhost:4180
集群模式的配置和伪集群基本一致.
因为集群模式下, 各server部署在不一样的机器上, 所以各server的conf/zoo.cfg文件能够彻底同样.
下面是一个示例:
Bash代码
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=4180
server.43=10.1.39.43:2888:3888
server.47=10.1.39.47:2888:3888
server.48=10.1.39.48:2888:3888
示例中部署了3台zookeeper server, 分别部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 须要注意的是, 各server的dataDir目录下的myid文件中的数字必须不一样.
10.1.39.43 server的myid为43, 10.1.39.47 server的myid为47, 10.1.39.48 server的myid为48.