众所周知,Zookeeper有三种不同的运行环境,包括:单机环境、集群环境和集群伪分布式环境

  在此介绍的是集群环境的安装配置

一、下载:

http://apache.fayea.com/zookeeper/current/

二、解压:

tar zxvf zookeeper-3.4.7.tar.gz

个人喜欢将解压后文件名更改为 zookeeper

三、修改配置:

在Zookeeper集群环境下只要一半以上的机器正常启动了,那么Zookeeper服务将是可用的。

因此,集群上部署Zookeeper最好使用奇数台机器,这样如果有5台机器,只要3台正常工作则服务将正常使用。

进入zookeeper/conf:

$:cp zoo_sample.cfg zoo.cfg

$:vim zoo.cfg

可参照下图:

1

 

上图的配置中h1、h2、h3分别为主机名,具体的对应的主机可参见Hadoop的安装与配置的博文。

在上面的配置文件中"server.id=host:port:port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。

接下来在dataDir所指定的目录下创建一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是上图中server.id中的id。

$:echo 1 > /root/software/zookeeper/data/myid

h1机器的内容为1,h2机器的内容为2,h3机器的内容为3,若有更多依此类推。

注:

dataDir:数据目录

dataLogDir:日志目录

clientPort:客户端连接端口

tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度

                  后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

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

四、启动与停止

启动:

bin/zkServer.sh start

停止:

bin/zkServer.sh stop

 2

如上图为正常启动。其中,QuorumPeerMain是zookeeper进程。

依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower)

如下所示,是在ZooKeeper集群中的每个结点上查询的结果:

3

4

5

通过上面状态查询结果可见,h2是集群的Leader,其余的两个结点是Follower

posted on 2015-12-31 15:31  一寸相思万千劫  阅读(923)  评论(0编辑  收藏  举报