Zookeeper集群部署

1.前置准备

JDK:zookeeper是基于java语言开发的,jdk必不可少
Zookeeper安装包:http://mirror.bit.edu.cn/apache/zookeeper/
Zookeeper集群部署_第1张图片
(若是要在linux虚拟机部署集群效果,还得准备两台以上的虚拟机,在这里我准备三台,之前的博客有关于linux虚拟机的安装配置,可以围观)

2.解压并配置

tar -zxvf zookeeper-3.4.13.tar.gz

进入bin,复制zoo_sample.cfg生成zoo.cfg,然后编辑配置zoo.cfg(当然新建一个zoo.cfg空文件也行)

#复制文件
cp zoo_sample.cfg zoo.cfg

你可知道为什么一定要有这个zoo.cfg文件,来看zookeeper的启动脚本zkServer.sh
Zookeeper集群部署_第2张图片
启动脚本调用了zkEnv.sh(同在bin目录下)
在这里插入图片描述
进入zkEnv.sh,可以看到又调用了一个zoo.cfg文件
在这里插入图片描述
到这里就了解了一定要存在zoo.cfg文件才能让zookeeper正常启动

#进入文件编辑
vim zoo.cfg
#编辑增加
dataDir=/usr/local/zookeeper-3.4.13/data/
dataLogDir=/usr/local/zookeeper-3.4.13/datalogs/
server.1=192.168.1.66:2888:3888
server.2=192.168.1.67:2888:3888
server.3=192.168.1.68:2888:3888

Zookeeper集群部署_第3张图片

相应地,要创建出dataDir和dataLogDir文件夹

mkdir /usr/local/zookeeper-3.4.13/data/
mkdir /usr/local/zookeeper-3.4.13/datalogs/

在新建的data文件夹下新建myid文件,并写上对应的号数,也就是配置文件中server.n的n,如server.1就写上1

echo 1 > myid

(注:若是部署单机模式,则配置文件只留server.1)

3.拷贝

配置好这一台虚拟机之后就可以用scp命令将配置好的zookeeper拷贝至其他两台虚拟机,然后改下myid,这是每个zookeeper的标志

4.启动

分别启动三台虚拟机的zookeeper

./bin/zkServer.sh start

zookeeper集群有主从之分,我的启动顺序为1(66)–>2(67)–>3(68),那么问题来了,那一台才是leader?
可以查看zookeeper的状态

./bin/zkServer.sh status

在这里插入图片描述
答案是2(67)这台第二启动的zookeeper是leader,其他两台为follower。
zookeeper集群的机制是挂掉半数或者以上就不可用

  • 当第一台zookeeper【1(66)】启动时,它给自己投票,1<3/2,这时的集群是不可用,处于 LOOKING。
  • 当第二台zookeeper【2(67)】启动时,它给自己投票,2>3/2,这时集群可用,由于编号大于第一台zookeeper,选举胜出成为leader,第一台zookeeper成为follower。
  • 当第三台zookeeper【3(68)】启动时,它给自己投票,由于第二台zookeeper已经成为leader,选举已经结束,所以它只能成为follower。

你可能感兴趣的:(Zookeeper)