2024 年云原生运维实战文档 99 篇原创计划 第 025 篇 |Docker 最佳实战「2024」系列 第 013 篇
你好,欢迎来到运维有术。
今天分享的内容是 Docker 最佳实战「2024」 系列文档中的 Docker 部署单节点 Apache Kafka 实战。
本文将详细介绍如何用 Docker 容器及 Docker Compose 部署单节点 Apache Kafka。同时,我们利用 Kafka 命令行创建测试数据,验证 Kafka 服务是否正常。
实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)
主机名 | IP | CPU(核) | 内存(GB) | 系统盘(GB) | 数据盘(GB) | 用途 |
---|---|---|---|---|---|---|
docker-node-1 | 192.168.9.81 | 4 | 16 | 40 | 100 | Docker 节点 1 |
docker-node-2 | 192.168.9.82 | 4 | 16 | 40 | 100 | Docker 节点 2 |
docker-node-3 | 192.168.9.83 | 4 | 16 | 40 | 100 | Docker 节点 3 |
合计 | 3 | 12 | 48 | 120 | 300 |
实战环境涉及软件版本信息
使用 Docker 部署 Apache Kafka 服务的镜像有以下几种选择:
本文选择下载量最大的 bitnami/kafka 镜像,构建单节点 Kafka 服务。
本文的部署方式没有启用加密认证仅适用于研发测试环境。
cd /data/containers
mkdir -p kafka/data
chown 1001.1001 kafka/data
创建配置文件,vi kafka/docker-compose.yml
name: "kafka"
services:
kafka:
image: 'bitnami/kafka:3.6.2'
container_name: kafka
restart: always
ulimits:
nofile:
soft: 65536
hard: 65536
environment:
- TZ=Asia/Shanghai
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://192.168.9.81:9094
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
networks:
- app-tier
ports:
- '9092:9092'
- '9094:9094'
volumes:
- ./data:/bitnami/kafka
networks:
app-tier:
name: app-tier
driver: bridge
#external: true
说明:
KAFKA_CFG_ADVERTISED_LISTENERS,注意将 192.168.9.81 换成实际的服务器 IP
external: true, 服务器已经创建 Docker 网络
app-tier
时,创建服务时会报错,可以启用这个参数。
cd /data/containers/kafka
docker compose up -d
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
kafka bitnami/kafka:3.6.2 "/opt/bitnami/script…" kafka 8 seconds ago Up 7 seconds 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp, 0.0.0.0:9094->9094/tcp, :::9094->9094/tcp
# 通过日志查看容器是否有异常,结果略
$ docker compose logs -f
docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-topics.sh --list --bootstrap-server 192.168.9.81:9094
正确执行后,输出结果如下:
$ docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-topics.sh --list --bootstrap-server 192.168.9.81:9094
kafka 02:20:37.63 INFO ==>
kafka 02:20:37.63 INFO ==> Welcome to the Bitnami kafka container
kafka 02:20:37.63 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers
kafka 02:20:37.63 INFO ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
kafka 02:20:37.64 INFO ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
kafka 02:20:37.64 INFO ==>
docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-console-producer.sh --producer.config /opt/bitnami/kafka/config/producer.properties --bootstrap-server 192.168.9.81:9094 --topic opsxlab_test
正确执行后,输出结果如下:
$ docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-console-producer.sh --producer.config /opt/bitnami/kafka/config/producer.properties --bootstrap-server 192.168.9.81:9094 --topic opsxlab_test
kafka 02:22:42.06 INFO ==>
kafka 02:22:42.07 INFO ==> Welcome to the Bitnami kafka container
kafka 02:22:42.07 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers
kafka 02:22:42.07 INFO ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
kafka 02:22:42.07 INFO ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
kafka 02:22:42.07 INFO ==>
>
注意: 注意最后的命令提示符 ">",该提示符是用来输入消息内容的。
再打开一个新的命令行终端,执行下面的命令
docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-console-consumer.sh --consumer.config /opt/bitnami/kafka/config/consumer.properties --bootstrap-server 192.168.9.81:9094 --topic opsxlab_test --from-beginning
正确执行后,输出结果如下:
[root@docker-node-1 ~]# docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-console-consumer.sh --consumer.config /opt/bitnami/kafka/config/consumer.properties --bootstrap-server 192.168.9.81:9094 --topic opsxlab_test --from-beginning
kafka 02:26:23.15 INFO ==>
kafka 02:26:23.15 INFO ==> Welcome to the Bitnami kafka container
kafka 02:26:23.16 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers
kafka 02:26:23.16 INFO ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
kafka 02:26:23.16 INFO ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
kafka 02:26:23.16 INFO ==>
在生产者控制台输入 "Hello World!" 生产数据,在消费者控制台查看生成的数据。
正确执行后,输出结果如下:
Producer 控制台
Consumer 控制台
文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):
运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。
以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒。
如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!
免责声明:
Get 本文实战视频(请注意,文档视频异步发行,请先关注)
欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾。
版权声明
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。