如何搭建一个 Zookeeper 集群

用户头像
Rayjun
关注
发布于: 2020 年 07 月 04 日
如何搭建一个Zookeeper集群

Zookeeper 在分布式系统中被用来同步各个服务器节点之间的状态,也可以用作服务发现,在各种分布式系统中,有很广泛的应用。



本文介绍一种搭建 Zookeeper 集群的方法。



和大多数分布式系统一样,Zookeeper 适合部署在节点为奇数的服务器集群中。



Zookeeper 的部署的环境和软件要求为:

  • 本地服务集群

  • openjdk8

  • zookeeper-3.4.14



本文使用之前配置好的的本地虚拟机集群,如果有配置服务器集群的需求,可以参照我之前关于搭建服务器集群文章。



软件安装



软件安装相对简单,只需要将 Zookeeper 解压到 /opt/module (对这块有疑问的可以去看我之前的文章),并把目录更名为 apache-zookeeper-3.6.1

$ tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz -C /opt/module/



集群配置



在 apache-zookeeper-3.6.1 目录中创建一个 zkData 目录,这里面用来存放服务运行中产生的数据以及集群的配置

$ mkdir -p zkData



进入到 conf 目录,将 zoo_sample.cfg 改名为 zoo.cfg

$ cd conf
$ cp zoo_sample.cfg zoo.cfg



然后编辑 zoo.cfg 文件,将 dataDir 配置为刚才创建好的 zkData 目录

$ vi zoo.cfg
dataDir=/opt/module/apache-zookeeper-3.6.1/zkData



然后将配置好的软件同步到另外两个服务器

$ rsync -rvl /opt/module/apache-zookeeper-3.6.1/ root@192.168.56.4:/opt/module/apache-zookeeper-3.6.1
$ rsync -rvl /opt/module/apache-zookeeper-3.6.1/ root@192.168.56.5:/opt/module/apache-zookeeper-3.6.1



还有最后一步,需要在三台机器上分别执行,以 192.168.56.3 机器为例,进入 zkData 目录,然后创建 myid 文件,文件中随便填入一个数字,只要别与另外两台机器重复

$ cd zkData
$ touch myid



然后再编辑 zoo.cfg,在配置文件中加上如下内容,需要注意 server 后面的数字需要与每台服务器中 myid 文件中的数字相同,然后配置好机器名称以及选举时需要用到的的端口号

$ cd conf
$ vi zoo.cfg
server.3=bigdata1:2888:3888
server.4=bigdata2:2888:3888
server.5=bigdata3:2888:3888



bigdata1,bigdata2,bigdata3 是三台机器的别名,在 /etc/hosts 文件中定义。



在另外两台机器上分别编辑 myid 和 zoo.cfg,myid 中的内容不能相同。



到这里,配置工作就完成了。



运行验证



配置完成后,在三台机器上分别执行:

$ bin/zkServer.sh start



如果没有报错,那么三台机器上的 Zookeeper 服务应该启动了,在启动前,我们无法确定那台服务器是 leader,哪台服务器是 follower ,这会根据当时服务器的状态自动选举产生。



启动后,可以来查看机器状态:



bigdata1: 可以看到这是一个从节点

ZooKeeper JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.6.1/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower



bigdata2: 这也是一个从节点

ZooKeeper JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.6.1/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower



bigdata3:这是一台主节点

ZooKeeper JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.6.1/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader



在确认集群启动之后,就可以通过客户端来连接集群,除了下面使用的命令行客户端之外,还可以使用各种编程语言的客户端。



$ bin/zkCli.sh



连接进入集群后,通过 ls / 来查看集群的根节点,默认情况下,只有一个空的 zookeeper 节点

$ ls /
[zookeeper]



创建一个名称为 ray 的节点,里面的内容是 rayjun

$ create /ray "rayjun"



通过 get 命令来查看 ray 节点下的内容

$ get /ray
rayjun



文 / Rayjun

本文首发于公众号 Rayjun

来呀,一起聊聊



发布于: 2020 年 07 月 04 日 阅读数: 48
用户头像

Rayjun

关注

程序员,王小波死忠粉 2017.10.17 加入

非著名程序员,还在学习如何写代码,公众号同名

评论

发布
暂无评论
如何搭建一个Zookeeper集群