前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZooKeeper 集群搭建

ZooKeeper 集群搭建

作者头像
码农UP2U
发布2021-12-21 14:31:02
4610
发布2021-12-21 14:31:02
举报
文章被收录于专栏:码农UP2U码农UP2U

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/ 目录下,然后对其进行解压,命令如下:

代码语言:javascript
复制
# tar -zxf zookeeper-3.4.10.tar.gz -C /opt/modules/

(2)配置 ZooKeeper 的配置文件

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

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

代码语言:javascript
复制
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 两个服务器上。命令如下:

代码语言:javascript
复制
# 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,命令如下:

代码语言:javascript
复制
# ./bin/zkServer.sh start

(6)查看启动状态

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

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

代码语言:javascript
复制
$ /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 角色的输出状态:

代码语言:javascript
复制
$ /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 服务器,命令如下:

代码语言:javascript
复制
$ ./bin/zkCli.sh -server centos01:2181

总结

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农UP2U 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档