Apache ZooKeeper是一个为分布式应用所设计开源协调服务,其设计目是为了减轻分布式应用程序所承担的协调任务。可以为用户提供同步、配置管理、分组和命名服务。
1.环境说明
在三台装有centos7.6(64位)服务器上安装ZooKeeper,官网建议至少3个节点,本次实验3台
(主机数:3(要求3+,且必须是奇数,因为ZooKeeper选举算法))。
需要提前安装jdk,本次实验安装的是jdk1.8.0_231。
2.主机名和ip映射关系
ZooKeeper集群所有结点作为一个整体对分布式应用提供服务,因此需要各个节点实现互连,就要知道其它节点主机和ip的映射关系。在每个节点上配置/etc/hosts文件,添加如下:
| IP地址 |ZooKeeper |myid|
|-168.61.1.11-|-server.1-|1
|-168.61.1.12-|-server.2-|2
|-168.61.1.13-|-server.3-|3
步骤:
1)下载ZooKeeper,选择稳定版,即stable,我这里是zookeeper-3.6.2。解压zookeeper压缩包
[appadmin@hadoop01 opt]$ tar -zxvf zookeeper-3.6.2.tar.gz
修改/conf目录下的zoo.cfg
先将样本zoo_sample.cfg拷贝一份为zoo.cfg,待会修改的就是zoo.cfg。
[appadmin@hadoop01]$ /opt/apache-zookeeper-3.6.2-bin/conf]# cp zoo_sample.cfg zoo.cfg
2)添加配置zkdata目录,里面将配置myid,zookeeper运行过程中产生的数据,就存在这个目录下
dataDir=/home/software/zookeeper-3.4.8/zkdata
…省略
配置三台的ip,广播端口(用于通讯)和选举端口
server.1=168.61.1.11:2888:3888
server.2=168.61.1.12:2888:3888
server.3=168.61.1.13:2888:3888
编辑myid
在zookeeper根目录下需要手动创建tmp目录,编辑myid为上面server后的数字,三个节点分别为1,2,3。
hadoop01节点配置1,其他依次类推
[appadmin@hadoop01 zkdata]$# vim myid
1
远程拷贝
将hadoop01节点上的zookeeper远程拷贝到hadoop02和hadoop03,记住修改后两个节点的myid。
3) 启动
进入zookeeper根目录下,进入bin下启动三台节点的zookeeper,并查看三台zookeeper的状态,如果为1主2从,就说明安装成功。
三台启动
[appadmin@hadoop01 bin]$ ./zkServer.sh start
查看状态,如果按照hadoop1、hadoop2和hadoop3顺序启动,则第一台是follower,第二台是leader,第三台是follower。这里用到了ZAB过半选举的规则,后续补充。
# 第二台是leader
[appadmin@hadoop01 bin]$ ./zkServer.sh status
/usr/local/tools/jdk1.8.0_231/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
这样就完成了zookeeper完全分布式的安装部署。