Apache ZooKeeper - 高可用ZK集群模式搭建与运维

举报
小工匠 发表于 2021/09/11 00:53:50 2021/09/11
【摘要】 文章目录 环境信息JDK总览集群架构及角色解读安装目录 部署十步曲配置文件node1node2node3node4(Observer节点)配置参数解读 myid 节点唯一标示启动节点节点状...

在这里插入图片描述


环境信息

Info1 Detail
OS CentOS7
ZK Version 3.5.8
JDK Version 1.8 + (1.7以上即可)
IP Info 192.168.126.133

其实我就一台Server …

在这里插入图片描述

伪集群 … 【其实和在多台部署上是一样一样的,我也木有这么多server~】

在这里插入图片描述


JDK

ZK Java编写的,当然少不了JDK了 ~

[root@localhost conf]# java -version
openjdk version "c.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@localhost conf]# 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

总览

集群架构及角色解读

在这里插入图片描述

  • Leader: 处理所有的事务请求(读+写请求),集群中只能有一个Leader

  • Follower:只能处理读请求,同时参与选举 。 作为 Leader的候选节点,如果Leader宕机,Follower节点要参与到新的Leader选举中,有可能成为新的Leader节点

  • Observer:只能处理读请求,不参与选举


安装目录

在这里插入图片描述

在这里插入图片描述


部署十步曲

  • Step1:配置JAVA环境
  • Step2:下载并解压zookeeper
  • Step3:copy zoo_sample.cfg文件zoo1.cfg
  • Step4:修改配置文件zoo-1.cfg
  • Step5: 复制三zoo1.cfg ,分别为zoo2.cfg,zoo3.cfg ,zoo4.cfg,修改dataDir和clientPort (如果是同一主机确保在同一主机上不同即可)
  • Step6: 标识Server ID , 创建四个文件夹${ZK_HOME}/data/zk1,${ZK_HOME}/data/zk2,${ZK_HOME}/data/zk3,${ZK_HOME}/data/zk4,在每个目录中创建文件myid 文件,写入当前实例的server id,即1,2,3,4
  • Step7: 启动4个节点 ./bin/zkServer.sh start ./conf/zoo1.cfg ./bin/zkServer.sh start ./conf/zoo2.cfg ./bin/zkServer.sh start ./conf/zoo3.cfg ./bin/zkServer.sh start ./conf/zoo4.cfg
  • Step8: 检测集群状态 ./bin/zkServer.sh status ./conf/zoo1.cfg ./bin/zkServer.sh status ./conf/zoo2.cfg ./bin/zkServer.sh status ./conf/zoo3.cfg ./bin/zkServer.sh status ./conf/zoo4.cfg
  • Step9: 客户端连接 ./zkCli.sh -server 192.168.126.133:2181,192.168.126.133:2182,192.168.126.133:2183,192.168.126.133:2184
  • Step10: 查看集群配置
[zk: 192.168.126.133:2181,192.168.126.133:2182,192.168.126.133:2183,192.168.126.133:2184(CONNECTED) 0] get /zookeeper/config
server.1=192.168.126.133:2188:3188:participant
server.2=192.168.126.133:2189:3189:participant
server.3=192.168.126.133:2190:3190:participant
server.4=192.168.126.133:2191:3191:observer
version=0
[zk: 192.168.126.133:2181,192.168.126.133:2182,192.168.126.133:2183,192.168.126.133:2184(CONNECTED) 1] 




  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

下面看下细节

在这里插入图片描述


配置文件

node1

[root@localhost conf]# cat zoo1.cfg | grep -v "#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk1
clientPort=2181
server.1=192.168.126.133:2188:3188
server.2=192.168.126.133:2189:3189
server.3=192.168.126.133:2190:3190
server.4=192.168.126.133:2191:3191:observer


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

node2

[root@localhost conf]# cat zoo2.cfg | grep -v "#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk2
clientPort=2182
server.1=192.168.126.133:2188:3188
server.2=192.168.126.133:2189:3189
server.3=192.168.126.133:2190:3190
server.4=192.168.126.133:2191:3191:observer


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

node3

[root@localhost conf]# cat zoo3.cfg | grep -v "#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk3
clientPort=2183
server.1=192.168.126.133:2188:3188
server.2=192.168.126.133:2189:3189
server.3=192.168.126.133:2190:3190
server.4=192.168.126.133:2191:3191:observer


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

node4(Observer节点)

[root@localhost conf]# cat zoo4.cfg | grep -v "#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk4
clientPort=2184
server.1=192.168.126.133:2188:3188
server.2=192.168.126.133:2189:3189
server.3=192.168.126.133:2190:3190
server.4=192.168.126.133:2191:3191:observer


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

配置参数解读

  • tickTime:用于配置Zookeeper中最小时间单位的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的
  • initLimit:用于配置Leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器再启动过程中,会与Leader建立连接并完成数据的同步,从而确定自己对外提供服务的起始状态。Leader服务器允许Follower在initLimit 时间内完成这个工作
  • syncLimit:Leader 与Follower心跳检测的最大延时时间
  • dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里
  • dataLogDir: Zookeeper服务器存储事务日志的目录,默认为dataDir
  • clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求\
  • server.A=B:C:D:E
   A 是一个数字,表示这个是第几号服务器,唯一标示
   B 是服务器的 ip 地址
   C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口
   D 选举端口
   E observer标识 

   
  
  • 1
  • 2
  • 3
  • 4
  • 5

myid 节点唯一标示

4个节点的myid信息如下
在这里插入图片描述


启动节点

[root@localhost conf]# pwd
/root/zkcluster/zk3.5.8Cluster/conf
[root@localhost conf]# 
[root@localhost conf]# 
[root@localhost conf]# 
[root@localhost conf]# 
[root@localhost conf]# 
[root@localhost conf]# 
[root@localhost conf]# ../bin/zkServer.sh  start  ./zoo1.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo1.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# ../bin/zkServer.sh  start  ./zoo2.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo2.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# ../bin/zkServer.sh  start  ./zoo3.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo3.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# ../bin/zkServer.sh  start  ./zoo4.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo4.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

节点状态查看

[root@localhost conf]# ../bin/zkServer.sh  status  ./zoo1.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo1.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@localhost conf]# 
[root@localhost conf]# ../bin/zkServer.sh  status  ./zoo2.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo2.cfg
Client port found: 2182. Client address: localhost.
Mode: leader
[root@localhost conf]# ../bin/zkServer.sh  status  ./zoo3.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo3.cfg
Client port found: 2183. Client address: localhost.
Mode: follower
[root@localhost conf]# ../bin/zkServer.sh  status  ./zoo4.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ./zoo4.cfg
Client port found: 2184. Client address: localhost.
Mode: observer
[root@localhost conf]# 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

或者使用客户端连上server 查看

  get   /zookeeper/config  

  
 
  • 1

在这里插入图片描述
完事儿 一切正常 没啦


行了就到这儿吧, 你也去搭建一套吧(别像我一样,扣扣搜搜都在一台server上)

在这里插入图片描述

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/110373457

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。