Apache ZooKeeper是一种高可用性服务,用于维护少量协调数据,通知客户端该数据的更改以及监视客户端的故障。自动HDFS故障转移的实现依赖于ZooKeeper来实现以下功能: a.故障检测:集群中的每个NameNode计算机都在ZooKeeper中维护一个持久会话。如果计算机崩溃,ZooKeeper会话将过期,通知另一个NameNode应该触发故障转移。 b.active活跃节点的选举:ZooKeeper提供了一种简单的机制,可以将节点专门选为活动节点。如果当前活动的NameNode崩溃,则另一个节点可能在ZooKeeper中采用特殊的独占锁,指示它应该成为下一个活动的。
注意:
搭建HA的 时候,在该模式下,即使活动节点发生故障,系统也不会自动触发从活动状态到备用NameNode的故障转移, 本文是关于如何配置和部署故障转义。
参考(
1.集群规划
在master、slave1和slave2三个节点上部署Zookeeper。
2.解压安装
-
在/opt目录下新建zookeeper,上传文件zookeeper-3.4.5.tar.gz到该目录
tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/zookeeper/
-
进入opt/zookeeper/zookeeper-3.4.5/conf目录下,将zoo_sample.cfg复制重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
#重命名
#mv zoo_sample.cfg zoo.cfg
3.配置zoo.cfg文件
-
vim opt/zookeeper/zookeeper-3.4.5/conf/zoo.cfg 添加如下配置
①修改:dataDir=/opt/zookeeper/zookeeper-3.4.5/tmp 这个下面是myid文件,必须这样
②在最后添加:
#2888端口是leader和flower之间通信的端口,3888端口是flower之间选举的端口
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888 -
在/opt/zookeeper/zookeeper-3.4.5/tmp 下创建myid文件,并写入对应ID
touch /opt/zookeeper/zookeeper-3.4.5/tmp/myid
#master 的ID为1
#利用echo
echo 1 > /opt/zookeeper/zookeeper-3.4.5/tmp/myid
#可利用 cat 查看是否成功
4.将配置好的文件进行文件分发
-
将master上的/opt/zookeeper/分发到slave1、slave2的对应目录/opt/zookeeper/下
scp -r /opt/zookeeper/zookeeper-3.4.5 slave1:/opt/zookeeper/
scp -r /opt/zookeeper/zookeeper-3.4.5 slave2:/opt/zookeeper/ -
修改/opt/zookeeper/tmp文件夹下的myid
vim myid
#slave1 ID 为 2
#slave2 ID 为 3
5.进行启动测试
-
依次在master、slave1、slave2中
#跳转到启动
cd /opt/zookeeper/zookeeper-3.4.5/bin
#启动
./zkServer.sh start
#查看状态
./zkServer.sh status如图则启动成功