这里用了三台主机,系统为CentOS6.5
[root@cetiti12 bin]# cat /etc/hosts
192.168.10.12 cetiti12
192.168.10.13 cetiti13
192.168.10.14 cetiti14
$wget http://mirrors.sonic.net/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
$tar zxvf zookeeper-3.4.9.tar.gz
1)生成配置文件
将 zoo_sample.cfg 复制一份,命名为 zoo.cfg,此即为Zookeeper的配置文件。
$cd zookeeper-3.4.9/conf
$cp zoo_sample.cfg zoo.cfg
2)编辑配置文件zoo.cfg
zoo.cfg配置完成:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=cetiti12:2888:3888
server.2=cetiti13:2889:3889
server.3=cetiti14:2890:3890
复制代码
说明:
dataDir 和 dataLogDir 需要在启动前创建完成
clientPort 为 zookeeper的服务端口
server.1、server.2、server.3 为 zk 集群中三个 node 的信息,定义格式为 hostname:port1:port2,其中 port1 是 node 间通信使用的端口,port2 是node 选举使用的端口,需确保三台主机的这两个端口都是互通的。
3. 更改日志配置
Zookeeper 默认会将控制台信息输出到启动路径下的 zookeeper.out 中,通过如下方法,可以让 Zookeeper 输出按尺寸切分的日志文件:
1)修改conf/log4j.properties文件,将
zookeeper.root.logger=INFO, CONSOLE
改为
zookeeper.root.logger=INFO, ROLLINGFILE
2)修改bin/zkEnv.sh文件,将
ZOO_LOG4J_PROP="INFO,CONSOLE"
改为
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
把配置好的安装文件复制到另两台主机上
创建 myid 文件
分别在三台主机的 dataDir 路径下创建一个文件名为 myid 的文件,文件内容为该 zk 节点的编号。
例如,在第一台主机上建立的 myid 文件内容是 1,第二台是 2,第二台是 3 。
启动三台主机上的 zookeeper 服务
cdzookeeper−3.4.9/bin ./zkServer.sh start
返回信息:
[root@cetiti12 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper … STARTED
3个节点启动完成后,可依次执行如下命令查看集群状态:
./zkServer.sh status
192.168.10.12 返回:
[root@cetiti12 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
192.168.10.13 返回:
[root@cetiti13 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
192.168.10.14 返回:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
如上所示,3个节点中,有1个 leader 和两个 follower。
1)停掉集群中的为 leader 的 zookeeper 服务,本文中的leader为 server2。
$ ./zkServer.sh stop
返回信息:
[root@cetiti13 bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Stopping zookeeper … STOPPED
2)查看集群中 server1 和 server3 的的状态
server1:
[root@cetiti12 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
server3:
[root@cetiti14 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
此时,server1 成为了集群中的 follower,server3为leader 。
3)启动 server2 的 zookeeper 服务,并查看状态
[root@cetiti13 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
此时,server2成为了集群中的 follower。
此时,Zookeeper 集群的安装及高可用性验证已完成!