由于 kafka 依赖 zookeeper,因此需要使用 docker 同时安装 zookeeper 和 kafka。
x01 安装 zookeeper
1) 先下载zookeeper镜像
> docker search zookeeper
> docker pull wurstmeister/zookeeper
2)启动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
x02 安装 kafka
1) 先下载kafka镜像
> docker search kafka
> docker pull wurstmeister/kafka
2)启动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
x03 消息验证
1)进入kakfa容器
> dcker exec -it kafka bash
> cd /opt/kafka/bin
可以看到很多的脚本:
> 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
2)测试生产者和消费者
生产者
> ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
消费者(需要另起一个终端)
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic test-topic --from-beginning
注意⚠️:
这里向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发生变化的时候,就要重新配置。
x04 kafka 集群模式搭建
新建kafka实例:
> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime wurstmeister/kafka
- 更改 broker.id: KAFKA_BROKER_ID 0,1,2
- 更改端口号:9092,9093,9094
x05 kafka-manger 安装
1)安装
> docker pull sheepkiller/kafka-manager
2)启动
docker run -d --name kfk-manager --restart always -p 9000:9000 -e ZK_HOSTS=<这里换成你的zookeeper地址和端口> sheepkiller/kafka-manager
3)访问地址 localhost:9000
配置上自己的zookeeper地址;
注意⚠️:
我最开始配置的是localhost:2181,发现无法查询到自己的broker信息;后来到zookeeper看了下,需要再加一下路径
localhost:2181/kafka 就可以了。
原文地址:https://blog.csdn.net/wjavadog/article/details/129907499
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。