Redhat-linux下zookeeper单机及集群方式安装启动

Redhat-linux下zookeeper单机及集群方式安装启动

2018327

13:59

划重点:

zookeeper下载地址https://www.apache.org/dyn/closer.cgi/zookeeper/,本次示例使用3.4.11版本

本次示例使用非root用户进行部署启动,用户主目录为/home/bizware

服务器环境需要有java环境

 

一、单机部署及启动

将下载的压缩包上传到服务器并解压,tar -xzvf zookeeper-3.4.11.tar.gz,若为其他压缩格式文件,使用相应的命令解压即可

 Redhat-linux下zookeeper单机及集群方式安装启动

2.切换至解压后的文件夹中的conf文件夹,cd zookeeper-3.4.11/conf

 Redhat-linux下zookeeper单机及集群方式安装启动

3.复制一份zoo_sample.cfg,并重命名为zoo.cfg,cp zoo_sample.cfg zoo.cfg

 Redhat-linux下zookeeper单机及集群方式安装启动

4.在zookeeper文件夹目录下新建data目录和logs目录mkdir logs data,修改zoo.cfg内容,vi zoo.cfg,修改前后对比如下所示:

修改前

 Redhat-linux下zookeeper单机及集群方式安装启动

修改后

 Redhat-linux下zookeeper单机及集群方式安装启动

5.至此单机版本即可进行启动,切换至zookeeper-3.4.11/bin目录下,并对.sh文件添加执行权限chmod +x *.sh,若已有执行权限可忽略,执行启动命令:./zkServer.sh start

 Redhat-linux下zookeeper单机及集群方式安装启动

注意:虽然启动日志打印的是STARTED已启动,但是并不一定真正的启动了,需要查看一下状态确认./zkServer.sh status

 Redhat-linux下zookeeper单机及集群方式安装启动

看到Mode:standalone可以确认已经以单机模式启动

关闭命令:./zkServer.sh stop,同样的,关闭后建议也查看一下status并且ps查看确认是否真正关闭

 Redhat-linux下zookeeper单机及集群方式安装启动

 

 

 

二、集群模式部署

划重点:为什么zookeeper集群服务器个数为奇数?一下内容转自https://www.cnblogs.com/LeeScofiled/p/7390937.html(冰冻开水的博客)

 

zookeeper集群中,会有三种角色,leader、 follower、 observer分别对应着总统、议员、观察者。

半数以上投票通过:可以这样理解。客户端的增删改操作无论访问到了哪台zookeeper服务器,最终都会被转发给leader服务器,再由leader服务器分给zookeeper集群中所有follower服务器去投票(投票指的是在内存中做增删改操作),半数投票通过就被认为操作可执行(commit),否则不可执行。

 

observer观察者服务器是针对于查询操作做负载的,observer与follower服务器最大的不同在于observer没有投票权,在客户端发起的增删改操中,leader服务器是不会把消息传递给observer服务器让其投票的。但是查询操作跟follower一样,客户端的查询到了observer服务器节点,observer服务器去访问leader服务器取最新的数据然后返回给客户端。

 

为什么zookeeper集群是单数?

1、容错

由于在增删改操作中需要半数以上服务器通过,来分析以下情况。

2台服务器,至少2台正常运行才行(2的半数为1,半数以上最少为2),正常运行1台服务器都不允许挂掉

3台服务器,至少2台正常运行才行(3的半数为1.5,半数以上最少为2),正常运行可以允许1台服务器挂掉

4台服务器,至少3台正常运行才行(4的半数为2,半数以上最少为3),正常运行可以允许1台服务器挂掉

5台服务器,至少3台正常运行才行(5的半数为2.5,半数以上最少为3),正常运行可以允许2台服务器挂掉

6台服务器,至少3台正常运行才行(6的半数为3,半数以上最少为4),正常运行可以允许2台服务器挂掉

通过以上可以发现,3台服务器和4台服务器都最多允许1台服务器挂掉,5台服务器和6台服务器都最多允许2台服务器挂掉但是明显4台服务器成本高于3台服务器成本,6台服务器成本高于5服务器成本。这是由于半数以上投票通过决定的。

 

2、防脑裂

一个zookeeper集群中,可以有多个follower、observer服务器,但是必需只能有一个leader服务器。如果leader服务器挂掉了,剩下的服务器集群会通过半数以上投票选出一个新的leader服务器。

集群互不通讯情况:

一个集群3台服务器,全部运行正常,但是其中1台裂开了,和另外2台无法通讯。3台机器里面2台正常运行过半票可以选出一个leader。

一个集群4台服务器,全部运行正常,但是其中2台裂开了,和另外2台无法通讯。4台机器里面2台正常工作没有过半票以上达到3,无法选出leader正常运行。

一个集群5台服务器,全部运行正常,但是其中2台裂开了,和另外3台无法通讯。5台机器里面3台正常运行过半票可以选出一个leader。

一个集群6台服务器,全部运行正常,但是其中3台裂开了,和另外3台无法通讯。6台机器里面3台正常工作没有过半票以上达到4,无法选出leader正常运行。

 

通可以上分析可以看出,为什么zookeeper集群数量总是单出现,主要原因还是在于第2点,防脑裂,对于第1点,无非是正本控制,但是不影响集群正常运行。但是出现第2种裂的情况,zookeeper集群就无法正常运行了。

<<<以上>>>

 

部署过程:

1.选择3台linux服务器,并确保三台服务器互通,如三台服务器分别为:192.168.43.11 192.168.43.22 192.168.43.33

2.按照以上集群的方式将zookeeper部署到3台服务器上,不需要启动

3.修改3台服务器的zoo.cfg文件内容为:

 Redhat-linux下zookeeper单机及集群方式安装启动

4.三台服务器分别在dataDir目录下新建myid文件,并将server.A中的A写入到文件中,注意myid文件不带任何后缀,echo 1 > myid、echo 2 > myid、echo 3 > myid,三台服务器的myid文件生成完毕

5.确保zoo.cfg最后添加的内容中的6个端口号已放开

 Redhat-linux下zookeeper单机及集群方式安装启动

6.依次启动三台服务器上的zookeeper,刚启动时查看状态可能是未成功启动的状态,这是因集群部署的方式,各zookeeper之间需要进行通讯,先将每台都启动,稍等片刻再进行查看状态

7.注意:若启动还是有问题,建议先进行单机部署,并且确认每台单机都能启动后再排查其他问题