ZooKeeper 集群搭建

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ZooKeeper 集群搭建

ZooKeeper 简介

       ZooKeeper 是一个分布式应用程序协调服务,主要用于解决分布式集群中应用系统的一致性问题。ZooKeeper 的应用场景包括但不限于统一命名服务、集群管理 和 分布式锁 等。其架构图大致如下:


       ZooKeeper 集群由一组服务器组成,这些节点当中有一个角色为 Leader,其他节点的角色为 Follower。当 Leader 节点发生故障而失效时,Follower 节点会快速相应,重新选出一个 Leader 节点。

ZooKeeper 的安装模式

       ZooKeeper 有三种安装模式,分别是 单机模式、伪分布式模式 和 集群模式。


       单机模式是指部署一个 ZooKeeper 进程,客户端直接与 ZooKeeper 进程进行通信;伪分布式模式是在单台计算机上运行多个 ZooKeeper 实例组成一个集群;集群模式则是在多台计算机上部署 ZooKeeper。


       在 ZooKeeper 集群中,会有一台机器作为 Leader 服务器负责管理和协调其他集群服务器。服务器的数量通常是单数。

ZooKeeper 集群的部署

       这里使用三台虚拟机来部署 ZooKeeper 集群,三台虚拟机的服务器均为 CentOS,且主机名分别为 centos01、centos02 和 centos03。

(1)上传 ZooKeeper 安装文件

       首先任选一台服务器来安装和配置 ZooKeeper,这里我选择在 centos01 服务器上进行完成。下载 ZooKeeper 的 tar 包,上传到 centos01 的服务器上,这里我上传到了 /opt/software/ 目录下,然后对其进行解压,命令如下:

# tar -zxf zookeeper-3.4.10.tar.gz -C /opt/modules/

(2)配置 ZooKeeper 的配置文件

       首先,在 ZooKeeper 的安装目录下创建一个 dataDir 目录,其用于存放 ZooKeeper 相关数据。


       然后,在 ZooKeeper 安装目录下的 conf 文件夹中新建配置文件 zoo.cfg 文件,内容如下:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/modules/zookeeper-3.4.10/dataDir
clientPort=2181
server.1=centos01:2888:3888
server.2=centos02:2888:3888
server.3=centos03:2888:3888

下面对配置项进行简单的说明:


tickTime:表示每次心跳间隔的时间;


initLimit:集群中的 Follower 服务器初始化连接 Leader 服务器时能等待的最大心跳数,如果在指定的心跳之后 Follower 仍然没有收到 Leader 服务器的返回信息,则连接失败;initLimit * tickTime 就是连接超时的时长;


server.id = host:port1:port2:该配置项用来标识不同的 ZooKeeper 服务器,id 必须在整个集群中是唯一的,且大小在 1 到 255 之间;host 是服务器的名称或 IP 地址,port1 是 Leader 端口,该服务器作为 Leader 时供 Follower 连接的端口,port2 是选举端口,选举 Leader 服务器时供其他 Follower 连接的端口


dataDir:存储数据的目录


clientPort:客户端连接 ZooKeeper 服务器的端口,ZooKeeper 会监听这个端口,接收客户端的请求


       最后,在 dataDir 目录下创建一个 myid 的文件,将服务器的 id 写入到该文件中。


(3)复制 ZooKeeper 安装信息到其他节点

       将 centos01 的 ZooKeeper 安装目录复制到 centos01 和 centos03 两个服务器上。命令如下:

# scp -r /opt/modules/zookeeper-3.4.10/ hadoop@centos02:/opt/modules/
# scp -r /opt/modules/zookeeper-3.4.10/ hadoop@centos03:/opt/modules/

(4)修改其他节点配置

       需要修改 centos02 和 centos03 中 myid 的值,需要与其 server.id 的 id 进行对应。

(5)启动 ZooKeeper

     分别在每台 ZooKeeper 上启动 ZooKeeper,命令如下:

# ./bin/zkServer.sh start

(6)查看启动状态

       ZooKeeper 启动后会自动的选举 Leader,查看服务状态时,可以查看到不同服务器的角色,查看如下:

       以下是 Leader 角色的输出状态:

$ /opt/modules/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

      以下是 Follower 角色的输出状态:

$ /opt/modules/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

(7)客户端连接服务器

       在 centos01 节点上,连接 ZooKeeper 服务器,命令如下:

$ ./bin/zkCli.sh -server centos01:2181

总结

       本篇内容简单的整理了搭建 ZooKeeper 集群的步骤,整个步骤比较固定。当 ZooKeeper 服务器过多时,可以通过脚本来进行批量的启动,这里就不再赘述。本文并没有整理 ZooKeeper 的应用场景,也没有整理 ZooKeeper 选举 Leader 的算法,以后会逐步的补上。希望本文对大家有所帮助。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
23天前
|
存储 分布式计算 资源调度
Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
【4月更文挑战第1天】Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
52 3
|
14天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
28 1
|
5月前
|
存储 Java Linux
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
79 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
|
2月前
|
算法 Java Linux
zookeeper单机伪集群集群部署
zookeeper单机伪集群集群部署
86 0
|
2月前
|
消息中间件 存储 Kafka
Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
【2月更文挑战第19天】Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
140 1
|
6月前
|
消息中间件 数据可视化 Kafka
消息中间件系列教程(21) -Kafka- 集群搭建(自带Zookeeper)
消息中间件系列教程(21) -Kafka- 集群搭建(自带Zookeeper)
68 0
|
3月前
|
网络协议 中间件 数据库
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
101 0
|
3月前
|
网络协议
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
34 0
|
4月前
|
Java
搭建Zookeeper集群的搭建
搭建Zookeeper集群的搭建
36 1
|
4月前
|
安全 Java API
Zookeeper(持续更新) VIP-02 Zookeeper客户端使用与集群特性
2,/usr/local/data/zookeeper-3,/usr/local/data/zookeeper-4,在每个目录中创建文件。创建四个文件夹/usr/local/data/zookeeper-1,/usr/local/data/zookeeper-Follower:只能处理读请求,同时作为 Leader的候选节点,即如果Leader宕机,Follower节点。己对外提供服务的起始状态。E: 角色, 默认是 participant,即参与过半机制的角色,选举,事务请求过半提交,还有一个是。