前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 最佳实战:Docker 部署单节点 Apache Kafka 实战

Docker 最佳实战:Docker 部署单节点 Apache Kafka 实战

原创
作者头像
运维有术
发布2024-05-28 18:16:04
9560
发布2024-05-28 18:16:04
举报
文章被收录于专栏:运维有术运维有术

Docker 最佳实战:Docker 部署单节点 Apache Kafka 实战

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

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3
  • Docker:24.0.7
  • Kafka:3.6.2

1. 前置条件

使用 Docker 部署 Apache Kafka 服务的镜像有以下几种选择:

  • bitnami/kafka(下载量 100M+)
docker-hub-bitnami-kafka
docker-hub-bitnami-kafka
  • apache/kafka(下载量 100K+)
docker-hub-apache-kafka
docker-hub-apache-kafka
  • 自己构建

本文选择下载量最大的 bitnami/kafka 镜像,构建单节点 Kafka 服务。

本文的部署方式没有启用加密认证仅适用于研发测试环境

2. 安装部署 Kafka

2.1 创建数据目录并设置权限

代码语言:bash
复制
cd /data/containers
mkdir -p kafka/data
chown 1001.1001 kafka/data

2.2 创建 docker-compose.yml 文件

创建配置文件,vi kafka/docker-compose.yml

代码语言:yaml
复制
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 时,创建服务时会报错,可以启用这个参数。

2.3 创建并启动服务

  • 启动服务
代码语言:bash
复制
cd /data/containers/kafka
docker compose up -d

2.4 验证容器状态

  • 查看 kafka 容器状态
代码语言:bash
复制
$ 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
  • 查看 kafka 服务日志
代码语言:bash
复制
# 通过日志查看容器是否有异常,结果略
$ docker compose logs -f

3. 验证测试

3.1 查看 Topic

  • 查看 Topic
代码语言:bash
复制
docker run -it --rm --network app-tier bitnami/kafka:3.6.2 kafka-topics.sh --list  --bootstrap-server 192.168.9.81:9094

正确执行后,输出结果如下:

代码语言:bash
复制
$ 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  ==>

3.2 创建生产者

  • 执行 kafka-console-producer 脚本创建 Producer
代码语言:bash
复制
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

正确执行后,输出结果如下:

代码语言:bash
复制
$ 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  ==>

>

注意: 注意最后的命令提示符 ">",该提示符是用来输入消息内容的。

3.3 创建消费者

再打开一个新的命令行终端,执行下面的命令

  • 执行 kafka-console-consumer 脚本创建 Consumer
代码语言:bash
复制
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

正确执行后,输出结果如下:

代码语言:bash
复制
[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  ==>

3.4 在生产者控制台生产数据

在生产者控制台输入 "Hello World!" 生产数据,在消费者控制台查看生成的数据。

正确执行后,输出结果如下:

Producer 控制台

docker-kafka-producer-test
docker-kafka-producer-test

Consumer 控制台

docker-kafka-consumer-test
docker-kafka-consumer-test

4. 自动化 Shell 脚本

文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):

  • Shell 脚本部署单节点 Kafka

运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

Get 本文实战视频(请注意,文档视频异步发行,请先关注)

欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 最佳实战:Docker 部署单节点 Apache Kafka 实战
    • 1. 前置条件
      • 2. 安装部署 Kafka
        • 2.1 创建数据目录并设置权限
        • 2.2 创建 docker-compose.yml 文件
        • 2.3 创建并启动服务
        • 2.4 验证容器状态
      • 3. 验证测试
        • 3.1 查看 Topic
        • 3.2 创建生产者
        • 3.3 创建消费者
        • 3.4 在生产者控制台生产数据
      • 4. 自动化 Shell 脚本
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档