ZooKeeper 集群搭建

Posted 码农UP2U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZooKeeper 集群搭建相关的知识,希望对你有一定的参考价值。

目录

ZooKeeper 简介

ZooKeeper 的安装模式

ZooKeeper 集群的部署

(1)上传 ZooKeeper 安装文件

(2)配置 ZooKeeper 的配置文件

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

(4)修改其他节点配置

(5)启动 ZooKeeper

(6)查看启动状态

(7)客户端连接服务器

总结


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 的算法,以后会逐步的补上。希望本文对大家有所帮助。

以上是关于ZooKeeper 集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

zookeeper集群搭建方式

Kafka + Zookeeper集群搭建

Zookeeper集群搭建

zookeeper--- 搭建zookeeper集群

zookeeper集群环境搭建(使用kafka的zookeeper搭建zk集群)

Hadoop详解——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用