安装的环境是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]