1.下载ZooKeeper最新稳定版本
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
2.解压
tar xzvf zookeeper-3.4.12.tar.gz
3.创建data以及log目录(自己随意创建一个目录)
mkdir /home/xqz/zookeeper-3.4.12/data
mkdir /home/xqz/zookeeper-3.4.12/log
4.修改zookeeper配置文件(zookeeper-3.4.12/conf/下)
因为zookeeper只给出了配置文件样板,所以先复制一份
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg
vim zoo.cfg
修改或添加以下几项即可,其余暂时保持不变(根据自己的需要自行配置)
dataDir=/home/xqz/zookeeper-3.4.12/data
dataLogDir=/home/xqz/zookeeper-3.4.12/log
server.1=master:2888:3888 //server.1中的1代表该主机,即zoo1的myid,需要配置
server.2=slave1:2888:3888 //master,slave1,slave2只是我之前配置hadoop时用的主机名,zookeeper起始时并无主从关系
server.3=slave2:2888:3888
6.修改myid(zookeeper-3.4.12/data/下)
因为这是我们配置的第一个节点,所以创建myid文件
echo 1 > myid
7.把整个zookeeper目录发送给其余节点
scp -r zookeeper-3.4.12 xqz@slave1:/home/xqz/zookeeper-3.4.12/
scp -r zookeeper-3.4.12 xqz@slave2:/home/xqz/zookeeper-3.4.12/
8.修改其余各节点的myid(以slave2主机为例)
vim zookeeper-3.4.12/data/myid
修改内容根据我们的配置文件:
2
9.启动各节点的zookeeper
zookeeper-3.4.12/bin/zkServer.sh start
10.检查各节点状态以及身份
zookeeper-3.4.12/bin/zkServer.sh status
加入我们启动节点的顺序按照myid依次为1,2,3,则leader是2,其过程是:
1. 1启动,他先投票给当前已启动的所有人每人一票,只有他自己得1票,并且他自己的得票不是大多数,选举失败
2. 2启动,1、2都投票给当前已启动的所有人每人一票,那么1、2各2票,他们的得票相同,选举失败,但他们知道了有其余节点启动;1、2都投票给当前已知myid中的较大者,所以2得到2票,2当选leader(1就是follower)
3. 3启动,发现已有leader,直接作为follower