当前位置:首页 > 服务端 > Mac 下使用 docker 安装 kafka

Mac 下使用 docker 安装 kafka

2022年08月06日 16:42:20服务端10

由于kafka依赖zookeeper,因此需要使用 docker 同时安装zookeeperkafka

1、拉取安装镜像

# 1、下载zookeeper镜像
➜  ~ docker pull wurstmeister/zookeeper
# 2、下载kafka镜像
➜  ~ docker pull wurstmeister/kafka

2、启动服务

# 启动 zookeeper
## docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
➜  ~ docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
# 启动kafka镜像生成容器
## docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT={host-ip}:{zookeeper-port}/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://{host-ip}:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
➜  ~ docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

参数说明:

-d:参数指定容器后台运行

–name kafka:参数指定容器别名

-e 参数可以设置 docker 容器内环境变量,每个变量的解释:

-e KAFKA_BROKER_ID=0:在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka:配置zookeeper管理kafka的路径host.docker.internal:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092:把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如 Java 程序访问出现无法连接。

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092:配置kafka的监听端口

-v参数设置:

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

注意点:

比如我的电脑是 mac,在 host-ip 这块就不能填本机 ip(windows 和 linux 可以),需要填docker.for.mac.host.internal或者host.docker.internal,zookeeper 端口启动在 2181,kafka 即将启动在 9092,那么我的命令可以是这样的docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka,如果要对日志文件做限制,可以参靠上面的命令。

由于 macOS 的 docker 底层实现的不同,主要原因是 macOS 的 docker 在容器和宿主之间无法通过 ip 直接通信。因此在安装的时候需要特殊注意与 ip 相关的设置,当容器需要访问宿主ip时,需要使用docker.for.mac.host.internal或者host.docker.internal代替。

这里向zookeeper注册的时候,使用的是host.docker.internal,我们在程序中连接kafka的时候,直接使用localhost会报错,如:Error connecting to node host.docker.internal:9092,其处理方式:

  • 我们可以在本机的 host 文件中,添加映射,将 127.0.0.1 host.docker.internal;
  • 不使用host.docker.internal,而是使用自己主机IP,但是当IP发生变化的时候,就要重新配置。
# 测试容器内访问宿主机ip
curl host.docker.internal:2181

3、验证

(1)进入 kafka 容器

➜  ~ docker exec -it kafka bash

(2)进入 kafka 容器中的脚本目录

注意,此时应该已经进入到了容器中的bash。进入 kafka 的脚本目录,其中kafka_2.13-2.7.0可能会随着版本而变化数字。

bash-5.1# cd opt/kafka_2.13-2.7.0/bin/

通过 ls 可以看到许多的.sh 脚本

bash-5.1# ls
connect-distributed.sh               kafka-console-producer.sh            kafka-leader-election.sh             kafka-run-class.sh                   trogdor.sh
connect-mirror-maker.sh              kafka-consumer-groups.sh             kafka-log-dirs.sh                    kafka-server-start.sh                windows
connect-standalone.sh                kafka-consumer-perf-test.sh          kafka-mirror-maker.sh                kafka-server-stop.sh                 zookeeper-security-migration.sh
kafka-acls.sh                        kafka-delegation-tokens.sh           kafka-preferred-replica-election.sh  kafka-streams-application-reset.sh   zookeeper-server-start.sh
kafka-broker-api-versions.sh         kafka-delete-records.sh              kafka-producer-perf-test.sh          kafka-topics.sh                      zookeeper-server-stop.sh
kafka-configs.sh                     kafka-dump-log.sh                    kafka-reassign-partitions.sh         kafka-verifiable-consumer.sh         zookeeper-shell.sh
kafka-console-consumer.sh            kafka-features.sh                    kafka-replica-verification.sh        kafka-verifiable-producer.sh

(3)测试 kafka 生产者和消费者

启动 kafka 生产者

运行 kafka 生产者发送消息

./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic

看到出现了个对话提示的小>就可以发送消息了,不过不要着急,先把消费者启动了。

启动 kafka 消费者

另起一个终端,进入 kafka 容器,进入/opt/kafka_2.13-2.7.0/bin目录,运行 kafka 消费者接收消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

测试发送和接收消息

在生产者中发送消息,消费者中应该能够收到对应的消息。

生产者

bash-5.1# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
>111111
>222222
>33333
>

消费者

bash-5.1# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
111111
222222
33333

作者:梦想的优惠券
来源链接:https://blog.csdn.net/qq_37958845/article/details/118936339

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/18353.html

分享给朋友:

“Mac 下使用 docker 安装 kafka” 的相关文章

kafka入门及安装部署

kafka入门及安装部署

kafka入门及安装部署 kafka安装包下载 kafka简介及应用场景 简介 应用场景 kafka安装部署...

kafka启动后没反应

kafka使用脚本启动后后台没有进程 然后删除data和log目录下的所有文件 开启kafka,成功解决 作者:nidiquge 来源链接:https://blog.csdn.net/nidiquge/article/detail...

docker安装kafka

docker安装kafka

1.先pull zookeeper的镜像 docker pull wurstmeister/zookeeper:latest docker pull wurstmeister/kafka:latest 2.查看镜像 docker im...

Kafka安装

Lison <cundream@163.com>, v1.0.3, 2019.03.27 摘要 解决和排查kafka安装过程中,由于kafka安装版本所使用zookeeper版本与本地zookeeper安装版本不兼容,导致kafk...

spring-kafka 实战

spring-kafka 实战

spring-kafka实战 1.       kafka介绍   1.1.       主要功能 根据官网的介绍,Apach...

kafka安装步骤

kafka安装步骤

一、kafka介绍 1,kafka简单介绍 kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息系统。最大的特性就是可以实时处理大量数据来满足需求。 2,kafka使用场景 1,日志收集:可以用kafka收集各种服务的日志 ,...

CentOS7 安装kafka教程及启动

CentOS7 安装kafka教程及启动

介绍 Kafka是分布式发布-订阅消息系统,最初由LinkedIn公司开发,之后成为之后成为Apache基金会的一部分,由Scala和Java编写。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 它与传统系统相比,有以下不同:...

Kafka安装之二 在CentOS 7上安装Kafka

Kafka安装之一  Zookeeper Kafka安装之二 在CentOS 7上安装Kafka 一、简介         Kafka是由Apache软件基金会开发的一个开...

centos8 kafka集群安装

##kafka运行涉及zookeeper,kafka和zookeeper都运行在jvm之上。 ###准备三台服务器,ip地址如下: 192.168.137.31 192.168.137.32 192.168.137.33 jdk安装 安...

windows安装kafka

windows安装kafka

一、下载kafka http://kafka.apache.org/downloads 选择二进制版本。 二、安装kafka 下载到本地后,将文件解压到本地磁盘下,该文件夹包括了所有相关的运行文件及配置文件,其子文件夹bin\w...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。