对于个人开发者而言,一般手头上没有多台服务器,有人可能会有云服务器,不过一般也只会买一台来用用就好;有人可能更习惯将本机当作服务器来玩。都可以。那么如何通过一台服务器或本机来搭建Kafka集群呢?

无外乎两种方式,一是通过docker来搭建,每台kafka broker用不同的端口来启动,即可组成集群;二是通过虚拟机来搭建,即用VMware在服务器或本机上启动多台虚拟机,每台虚拟机都安装一个kafka broker。笔者采用的是第一种方式。

1、环境说明及架构说明

Linux系统:centos 8

Zookeeper:wurstmeister/zookeeper

Kafka:wurstmeister/kafka

如下图,笔者准备搭建一台Zookeeper以及三个Kafka broker组成的Kafka Cluster。

2、docker搭建Zookeeper

(1)查看镜像

首先用docker search命令来查找docker上有哪些可用的Zookeeper镜像。

docker search zookeeper

照理说,镜像最好选择官方镜像,也就是上图中的第一个。但是笔者这里选择第二个镜像wurstmeister/zookeeper,那是因为我发现用docker查找Kafka的镜像时是没有官方镜像的,而Kafka镜像中排在第一的也是以wurstmeister为开头的。也就是说,这两个镜像是出自同一家机构或个人的。

(2)拉取镜像

然后拉取镜像,默认拉取最新版本的。

docker pull wurstmeister/zookeeper

(3)启动镜像

docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

3、docker搭建Kafka Cluster

启动好了Zookeeper服务之后,来开始搭建Kafka Cluster了。

(1)查找镜像

同样用docker search命令来查找Kafka的镜像,这里有个小插曲,笔者发现个问题。

直接用docker search查找,结果集中并未有wurstmeister/kafka,而用

docker search kafka --limit=50

这条命令查找,结果集的第一条就是wurstmeister/kafka,且收藏数最多。也就是说,docker search这条命令返回的结果集在默认情况下是有条数限制的。但奇怪的是,就算有条数限制,为什么不按照收藏量(STARS)优先返回镜像的结果集呢?这个疑惑暂且放下,知道的同学麻烦在评论区告知一下哈。

(2)拉取镜像

docker pull wurstmeister/kafka

(3)启动三个broker

命名为:kafka0  端口:9092  brokerId: 0

docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

命名为:kafka1  端口:9093  brokerId: 1

docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka

命名为:kafka2  端口:9094  brokerId: 2

docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka

【Attention:以上三条命令中的xxx用自己的服务器ip替换】

执行上面三条命令后,分别在9092 / 9093 / 9094三个端口启动了kafka broker,执行docker ps查看结果。

 至此,三个broker节点的Kafka集群搭建完成。

(4)小插曲:kafka启动失败

笔者一开始在启动kafka的时候,一直启动失败。报错如下:

kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING

大概翻译过来就是kafka服务在启动的时候连接Zookeeper服务超时,说白了,就是连不上。

btw,如果容器没起来的话,无法通过docker exec进入容器查看容器日志,此时可以用

docker logs 容器id 查看docker容器的日志(注意是容器id,并不是镜像id)。

笔者在这个问题上搞了将近一个小时,才想起来是云服务器的网络安全组的规则忘记配置了。

于是立马登上云服务器配置了一下,然后kafka就能启动成功了。

4、效果测试

执行docker exec命令随意进入一个broker的容器内,再进入opt目录。

进入opt目录后发现有两个kafka,对比了一下,两个kafka目录差不多,都有bin下的各种可执行脚本,都有config下的各种properties配置文件。这里,笔者选择了kafka_2.13-2.8.1目录。

笔者创建了一个名为 topic-demo 的主题,该主题有3个分区,3个副本因子。

从 describe 命令可以看到3个分区均匀地分布在三个broker中。可见,这三个broker已经成功地组成了Kafka集群了。

执行操作主题等相关命令,可参考:Kafka学习——梳理bin目录下各个脚本的用法(五)

Docker搭建Kafka集群相关推荐

  1. Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager

    Kafka 搭建: 建立Zookeeper容器: 这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器. $ do ...

  2. docker环境,搭建kafka集群

    https://zhuanlan.zhihu.com/p/114968151 docker环境,搭建kafka集群

  3. 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)

    基于docker搭建zookeeper集群.kafka集群---二(多台真机之间的集群) https://blog.csdn.net/diebiao6526/article/details/10143 ...

  4. 利用docker搭建服务器集群并部署大数据生态软件

    1.集群搭建与配置 本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安 ...

  5. Docker搭建Clickhouse集群

    Docker搭建Clickhouse集群 环境说明 2C 2G 30G hostname IP 操作系统 服务 localhost 192.168.88.171 CentOs 7.8 clickhou ...

  6. docker-compose快速搭建kafka集群

    文章目录 前言 docker-compose快速搭建kafka集群(较详细) docker-compose快速搭建Zookeeper集群+kafka集群 参考资料 前言 当前是在学习kafka3.0的 ...

  7. docker 安装Kafka集群

    文章目录 前言 一.安装Zookeeper.Kafka 二.启动 1.启动Zookeeper 2.启动Kafka 3.搭建Kafka集群 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工 ...

  8. 单机 搭建kafka集群 本地_单机快速搭建多节点kafka集群

    有时候为了更好地了解kafka集群的运行机制,需要自己搭建kafka集群.本文的目的就是让大家在单机上快速搭建kafka集群(仅作为单机测试使用). 环境及工具版本 mac OS 10.15.5 ka ...

  9. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

最新文章

  1. GraPhlAn绘制的超高颜值物种树Cladogram
  2. An easy problem(hdu2055)
  3. wine运行exe程序只出现了一个黑色长方形
  4. redis入门笔记(1)
  5. 使用LaTeX绘制列表(有的地方称作Num Item)
  6. SQL文测试数据时,注意对0件的测试!!!【0件时,防止空指针异常!】
  7. 经典人生感悟 看看你少了那一条
  8. 云端战争是一场马拉松,未来格局不会一家独大
  9. u启动win10pe安装win10系统教程
  10. jar类型文件图标不显示_显示的JAR文件
  11. 使用laypage和pageHelper分页
  12. 《信号与系统学习笔记》—线性反馈系统(二)
  13. matlab教程simulink,MatlabSimulink教程课件.ppt
  14. 20181018 考试记录
  15. python动态网页爬取——四六级成绩批量爬取
  16. Diabetic Retinopathy Detection
  17. Objective C的关键字oneway
  18. 计算机黑屏论文,在家写论文电脑突然黑屏自救方案,这几个方法可以解决95%以上的电脑问题...
  19. C语言·百钱百鸡问题
  20. 成功解决问题h5py\h5r.pyx, line 145, in init h5py.h5r AttributeError: type object 'h5py.h5r.Reference' ha

热门文章

  1. DNS解析过程【访问网站】
  2. 网站关键词布局定位分析,如何准确定位我们需要的网站关键词?
  3. WordPress网站搬家换域名(数据迁移无丢失)
  4. ioctlsocket函数全面解析
  5. 服务开通语音通知功能怎样实现?
  6. 牛客S2第12场:音符共鸣
  7. 简单的二级目录 操作
  8. web网页设计实例作业 ——中国民间年画 (5页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码
  9. 利用类接口技术完成排序
  10. 根据打印机IP传输打印文件