首页 > 其他分享 >Docker搭建Kafka集群

Docker搭建Kafka集群

时间:2022-11-24 12:07:17浏览次数:42  
标签:KAFKA wurstmeister kafka 集群 镜像 Docker Kafka docker

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

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

1、环境说明及架构说明

Linux系统:centos 8

Zookeeper:wurstmeister/zookeeper

Kafka:wurstmeister/kafka

准备搭建一台Zookeeper以及三个Kafka broker组成的Kafka Cluster。

Docker搭建Kafka集群_zookeeper

2、docker搭建Zookeeper

查看镜像

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

docker search zookeeper

Docker搭建Kafka集群_kafka_02

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

拉取镜像

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

docker pull wurstmeister/zookeeper

Docker搭建Kafka集群_zookeeper_03

启动镜像 

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

Docker搭建Kafka集群_docker_04

3、docker搭建Kafka Cluster

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

查找镜像

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

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

docker search kafka --limit=50

这条命令查找,结果集的第一条就是wurstmeister/kafka,且收藏数最多。也就是说,docker search这条命令返回的结果集在默认情况下是有条数限制的。但奇怪的是,就算有条数限制,

Docker搭建Kafka集群_zookeeper_05

Docker搭建Kafka集群_zookeeper_06

拉取镜像

docker pull wurstmeister/kafka

Docker搭建Kafka集群_docker_07

启动三个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查看结果。

Docker搭建Kafka集群_kafka_08

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

小插曲:kafka启动失败

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

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

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

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

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

Docker搭建Kafka集群_kafka_09

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

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

4、效果测试

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

Docker搭建Kafka集群_docker_10

Docker搭建Kafka集群_kafka_11

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

Docker搭建Kafka集群_docker_12

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

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

Docker搭建Kafka集群_docker_13

标签:KAFKA,wurstmeister,kafka,集群,镜像,Docker,Kafka,docker
From: https://blog.51cto.com/u_15867943/5878410

相关文章

  • Kafka分区分配策略
    生产者发送消息分区分配策略kafka里的partitioner(分区器)来负责客户端生产层面的负载均衡。如果指定分区,就直接使用该分区。未指定分区但存在key,则根据序列化key使用......
  • Docker 常用软件安装命令
    这里收集一些常用环境的安装步骤,可无脑复制命令逐行执行(注意网桥),节省安装时间,随时用到随时补充命令涉及到:绑定相关命令,默认左侧为物理机,右侧为容器MySQLMySQL5.7.38......
  • Prometheus Operator与kube-prometheus之二-如何监控1.23+ kubeadm集群
    简介系列文章:​​标签-Prometheus-东风微鸣技术博客(ewhisper.cn)​​PrometheusOperator的上一篇:​​PrometheusOperator与kube-prometheus之一-简介-......
  • 如何诊断 11.2 集群节点驱逐问题 (文档 ID 1674872.1)
    一、适用于OracleDatabase-EnterpriseEdition-版本11.2.0.1到11.2.0.2[发行版11.2]本文档所含信息适用于所有平台二、用途这篇文档提供了诊断11.2集群节点......
  • Kafka 相关配置参数
    生产者配置参数:acks:指定了必须有多少个分区副本收到消息,生产者才会认为消息写入是成功的。默认为acks=1acks=0如果设置为0,则Producer不会等待服务器的反馈。该消息......
  • Win10安装Kafka
    安装kafka前需要安装zookeeper,安装教程:Win10安装Zookeeper服务-键盘命-博客园(cnblogs.com)去官网下载kafka,官网地址:ApacheKafka 下载好之后,解压文件到F:\a-ka......
  • CentOS7.8部署Docker
    1.通过CentOS安装Docker1.1查看操作系统平台[root@k8s~]#cat/etc/redhat-releaseCentOSLinuxrelease7.8.2003(Core)[root@k8s~]#uname-r3.10.0-1127.el7.x86_64......
  • Docker学习笔记七:Docker提交镜像到阿里云仓库
    一、准备1、开启阿里云镜像仓库a.访问阿里云地址并登陆地址:http://cr.console.aliyun.comb.选择“容器镜像服务”c.使用“个人实例”构建仓库d.创建命名空......
  • 部署于K8S集群上面应用性能影响点推测
    前言本人2017年第一次接触K8S.中间断断续续学习K8S相关的内容.但是最近一年,几乎没太有学习.因为之前学习了四五年,一直以为产品马上要用结果一直被浇冷水.去年开......
  • Docker基础知识 (22) - Kubernetes(五) | 在 K8s 集群上部署 NFS 实现共享存储 (2)
    在“Docker基础知识(21)-Kubernetes(四)|在K8s集群上部署NFS实现共享存储(1)”里我们演示如何在K8s集群中部署NFS和创建静态PV/PVC,本文将继续演示如何创......