ZooKeeper集群安装

2018/6/6 posted in  ZooKeeper

安装的环境是CentOS 7.4 64位,ZooKeeper安装版本是zookeeper-3.4.12

下载并解压ZooKeeper

进入/usr/local/src目录

输入wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz

等待下载完成,输入tar -zxvf zookeeper-3.4.12.tar.gz 解压文件夹

配置集群映射IP

进入/usr/local/src/zookeeper-3.4.12/conf

输入命令mv zoo_sample.cfg zoo.cfg

编辑zoo.cfgvi zoo.cfg,在文件末尾加上:

server.1=192.168.159.128:2883:3883
server.2=192.168.159.129:2883:3883
server.3=192.168.159.130:2883:3883

修改dataDir为:

dataDir=/home/hadoop/storage/zookeeper

创建zookeeper目录

mkdir –p /home/hadoop/storage/zookeeper

ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。

注:也可以使用hosts的形式进行配置,这里因为安装方便,所以使用了配置IP的方式,使用hosts方式配置方式如下:

添加/etc/hosts内容:

192.168.159.128  slave-01
192.168.159.129  slave-02
192.168.159.130  slave-03

然后修改zookeeper配置文件,在文件末尾添加上:

server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888

远程复制分发安装文件

上面已经在一台机器上配置了完成了ZooKeeper,现在可以将该配置好的文件远程拷贝到集群中其他节点对应的目录:
cd /usr/local/src
scp -r zookeeper-3.4.12 192.168.159.129:/usr/local/src/

设置myid

在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来表示当前主机,在conf/zoo.cfg文件中配置的server.x中x为数字,则myid文件中就输入这个数字,例如:

echo "1" > /home/hadoop/storage/zookeeper/myid

有多少台节点,就配置输出多少个myid

启动Zookeeper集群

在每个节点的zookeeper目录的bin目录下,输入命令:

cd/usr/local/src/zookeeper-3.4.12/bin

执行命令

./zkServer.sh start

查看启动日志:

tail -500f zookeeper.out

由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。其他结点可能也出现类似问题,属于正常。

注:如果防火墙开着,记得打开相对端口或者暂时关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

安装验证

可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),使用命令:

/usr/local/src/zookeeper-3.4.12/bin/zkServer.sh status

如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
通过上面状态查询结果可见,有一个是集群的Leader,其余的两个结点是Follower。另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接。

先进入Zookeeper的目录

cd /usr/local/src/zookeeper-3.4.12

执行:

bin/zkCli.sh -server 192.168.159.129:2181

等待连接完成,执行:

ls /

出现:

[zookeeper]

当前根路径为/zookeeper