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

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

20201130102620369.png


环境信息


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]# 


总览

集群架构及角色解读


20201130110001188.png




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


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


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


安装目录


20201130104653773.png

20201130104829931.png

部署十步曲



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 , 创建四个文件夹ZKHOME/data/zk1,{ZK_HOME}/data/zk1,{ZK_HOME}/data/zk2,ZKHOME/data/zk3,{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:2

[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] 

下面看下细节


配置文件

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


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


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


node4(Observer节点)

node4(Observer节点)
[root@localhost conf]# cat zoo4.cfg | grep -v "#


配置参数解读


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标识 


myid 节点唯一标示

4个节点的myid信息如下


2020113014261217.png

启动节点

[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]# 


节点状态查看

[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]# 


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

get   /zookeeper/config


20201130142733843.png


完事儿 一切正常 没啦


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


相关文章
|
4月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
易易互联科技有限公司是吉利集团旗下专注于换电生态的全资子公司,致力于打造安全、便捷、便宜的智能换电网络。公司依托吉利GBRC换电平台,基于电池共享与车辆全生命周期运营,已布局超470座换电站,覆盖40多个城市,计划2027年达2000座。面对海量设备高并发连接、高实时性要求及数据洪峰挑战,易易互联采用阿里云MQTT与RocketMQ构建高效物联网通信架构,实现稳定接入、低延迟通信与弹性处理,全面支撑其全国换电网络规模化运营与智能化升级。
342 1
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
470 4
|
9月前
|
消息中间件 运维 Java
搭建Zookeeper、Kafka集群
本文详细介绍了Zookeeper和Kafka集群的搭建过程,涵盖系统环境配置、IP设置、主机名设定、防火墙与Selinux关闭、JDK安装等基础步骤。随后深入讲解了Zookeeper集群的安装与配置,包括数据目录创建、节点信息设置、SASL认证配置及服务启动管理。接着描述了Kafka集群的安装,涉及配置文件修改、安全认证设置、生产消费认证以及服务启停操作。最后通过创建Topic、发送与查看消息等测试验证集群功能。全网可搜《小陈运维》获取更多信息。
834 1
|
10月前
|
运维 供应链 前端开发
中小医院云HIS系统源码,系统融合HIS与EMR功能,采用B/S架构与SaaS模式,快速交付并简化运维
这是一套专为中小医院和乡镇卫生院设计的云HIS系统源码,基于云端部署,采用B/S架构与SaaS模式,快速交付并简化运维。系统融合HIS与EMR功能,涵盖门诊挂号、预约管理、一体化电子病历、医生护士工作站、收费财务、药品进销存及统计分析等模块。技术栈包括前端Angular+Nginx,后端Java+Spring系列框架,数据库使用MySQL+MyCat。该系统实现患者管理、医嘱处理、费用结算、药品管控等核心业务全流程数字化,助力医疗机构提升效率和服务质量。
615 4
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
275 5
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
257 2
|
3月前
|
人工智能 运维 监控
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
192 17
|
8月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
1053 0
|
5月前
|
人工智能 运维 安全
运维老哥的救星?AI 驱动的自动化配置管理新趋势
运维老哥的救星?AI 驱动的自动化配置管理新趋势
332 11

热门文章

最新文章

推荐镜像

更多