当前位置:首页 > 技术分析 > 正文内容

手把手带你部署ZooKeeper

ruisui882周前 (06-02)技术分析12

Kafka服务依赖于ZooKeeper(暂不考虑KRaft模块),所以部署Kafka前需要先部署ZooKeeper服务。

部署ZooKeeper服务有两种方式:

(1)下载独立的ZooKeeper进行部署。

(2)使用Kafka提供的ZooKeeper包部署服务。笔者使用这种方式部署ZooKeeper服务。

1. 准备环境

(1)准备3台机器(或3个Docker之类的容器),操作系统为Linux系统,主机名分别为zk1、zk2、zk3,用于部署一个3节点的集群(也可以使用单节点的ZooKeeper练习)。

(2)由于Kafka 3.0开始放弃对Java 8和Scala 2.12的支持,所以笔者安装了OpenJDK 11,用于ZooKeeper、Kafka集群。JDK的安装较简单,这里不做介绍。

提示:本书介绍的部署、调试操作,如无特殊说明,均使用OpenJDK 11。

(3)下载Kafka安装包(笔者下载的是kafka_2.13-3.0.0.tgz),解压并进入kafka_2.13-3.0.0,本节操作都基于该目录。

2. 修改配置

(1)我们需要为每个ZooKeeper服务配置一个集群唯一的服务Id,该Id为一个正整数,用于标识ZooKeeper服务,存储在data/zookeeper/myid中。

$ mkdir -p /tmp/zookeeper
$ echo 1 > /tmp/zookeeper/myid

注意:这里不同ZooKeeper服务的myid需要不同,笔者分别为3个ZooKeeper节点定义了Id:1、2、3。

(2)在ZooKeeper默认的配置文件
config/zookeeper.properties中添加ZooKeeper集群信息。

tickTime=2000
initLimit=5
syncLimit=2
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888


  • tickTime、initLimit、syncLimit:ZooKeeper集群使用的配置,详细说明请参考ZooKeeper文档。
  • 配置中的后3行为ZooKeeper集群配置,格式为server.myid=IP:Port1:Port2,myid是ZooKeeper服务Id,Port1端口用于该ZooKeeper服务与集群leader服务交换信息,Port2端口用于当集群leader服务下线时选举新的leader服务。

另外,ZooKeeper中还有如下配置需要关注:

  • dataDir:ZooKeeper数据存储目录,默认为/tmp/zookeeper,如果修改了该配置,则需要在该配置指向的目录下创建myid文件。
  • clientPort:ZooKeeper服务监听端口,默认为2181。
  • admin.serverPort:ZooKeeper后台服务端口,默认为8080。

3. 启动ZooKeeper服务

(1)使用以下命令,在3台机器上启动ZooKeeper服务。

$ ./bin/zookeeper-server-start.sh config/zookeeper.properties

如果要在后台启动ZooKeeper服务,则可以使用以下命令:

$ ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

ZooKeeper的日志默认输出到logs/zookeeper.out文件中。

(2)3台机器的ZooKeeper服务都启动后,在任意一个服务节点查看ZooKeeper目录。

$ ./bin/zookeeper-shell.sh localhost:2181
zk> ls /
[zookeeper]

如果能正常查看ZooKeeper目录,则说明ZooKeeper集群部署正常。关于ZooKeeper命令的使用,本书不详细介绍,请读者自行了解。


内容摘自《深入理解Kafka与Pulsar》,本书详细介绍了Kafka与Pulsar的使用方式,并深入分析了它们的实现机制。通过阅读本书,读者可以快速入门和使用Kafka与Pulsar,并深入理解它们的实现原理。

适读人群 :Kafka、Pulsar的专业技术人员。 大数据相关应用的开发者、运维者和爱好者。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4378.html

分享给朋友:

“手把手带你部署ZooKeeper” 的相关文章

学会使用Vue JSX,一车老干妈都是你的

作者:子君转发链接:https://mp.weixin.qq.com/s/eAOivpHeowLShfwPfW8-BA?君自前端来,应知前端事。需求时时变,bug改不完。?连续几篇文章,每篇都有女神,被老铁给吐槽了,今天不提了女神了,反正女神都是别人的(扎心了)。这两天小编看了腾讯与老干妈的事情,晚...

Git 分支管理策略汇总

最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码?我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的流程。所以查了一些资料,总结出下面这篇文章,一共包含四种常见的分支管理策略,分享给大家。Git flow在这种模式下,主要维护了两类分支...

编码 10000 个小时后,开发者悟了:“不要急于发布!”

【CSDN 编者按】在软件开发的道路上,时间是最好的老师。根据“一万小时定律”,要成为某个领域的专家,通常需要大约一万小时的刻意练习。本文作者身为一名程序员,也经历了一万小时的编程,最终悟出了一个道理:慢即是快,重视架构设计和代码质量,确保每一行代码都经得起时间的考验。作者 | Sotiris Ko...

一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问

问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。那为什么此服务内存占用稍大...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...

vue-router是如何解析query参数呢? #前端

vue-router 中的 query 解析。1. 大家好,我是龙仔。今天来分享 vue-router 是如何解析快乐参数的,因为使用 vue 路由会传 query 参数和快乐参数,所以从 vue 的角度来看如何解析传递的快乐参数。2. 基础知识大家应知道,快乐参数结构如:a、b、c、a、b、c、a...