众所周知,Zookeeper有三种不同的运行环境,包括:单机环境、集群环境和集群伪分布式环境
在此介绍的是集群环境的安装配置
一、下载:
二、解压:
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
可参照下图:
上图的配置中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
如上图为正常启动。其中,QuorumPeerMain是zookeeper进程。
依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower)
如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
通过上面状态查询结果可见,h2是集群的Leader,其余的两个结点是Follower