使用docker配置kafka环境

本文介绍如何使用Docker和docker-compose配置Kafka集群,包括单节点和多节点的设置。通过具体示例,展示了如何创建Topic,以及如何使用kafka-console-producer和kafka-console-consumer进行消息的发送和接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_16829085/article/details/108331951

Docker镜像

使用第三方镜像wurstmeister/kafka-docker
docker-compose.yml内容如下:

---
version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:5.0.1
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    # -----------------------------------------------------------------------------
    # For connections _internal_ to the docker network, such as from other services
    # and components, use kafka:29092.
    #
    # See https://rmoff.net/2018/08/02/kafka-listeners-explained/ for details
    # -----------------------------------------------------------------------------
    image: confluentinc/cp-kafka:5.0.1
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

注意:PLAINTEXT_HOST://localhost:9092,直接在宿主机访问。

运行kafka

1.执行docker-compose up -d命令,使用docker ps 可以看到启动了一个zookeeper容器和一个kafka容器
在这里插入图片描述
2. 多节点。执行docker-compose scale kafka=3,可以启动三个节点.

运行kafka-topics --version,可以查看kafka版本
在这里插入图片描述
或者运行find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*',2.11是指Scala 的版本
在这里插入图片描述

测试

  1. 从上图可以看到启动的容器名为kafka_kafka_1,执行docker exec -it kafka_kafka_1 /bin/bash 命令进入容器

  2. 执行kafka-topics --create --topic topic --partitions 4 --zookeeper $ZK --replication-factor 1,创建了一个topic
    在这里插入图片描述3.执行kafka-topics --list --zookeeper zookeeper:2181,查看所有topic
    在这里插入图片描述

  3. 命令行发送数据,kafka-console-producer --broker-list localhost:9092 --topic topic
    在这里插入图片描述

  4. 接收数据 kafka-console-consumer --bootstrap-server localhost:9092 --topic topic
    在这里插入图片描述

文件信息

  1. 配置文件位于/etc/kafka目录下
    在这里插入图片描述

2.server.properties文件的配置信息简单展示,如下图所示。
在这里插入图片描述

### 如何在 Docker 中设置和配置 Kafka 容器 #### 创建并运行 Kafka 和 ZooKeeper 容器 为了使 Kafka 正常工作,通常需要先启动一个 ZooKeeper 实例。可以使用 `docker-compose` 或者单独创建两个容器来实现这一点。 对于简单的单节点部署,可以通过以下命令快速启动 ZooKeeper: ```bash docker run -d --name zookeeper \ --env ALLOW_ANONYMOUS_LOGIN=yes \ bitnami/zookeeper:latest ``` 接着,通过指定环境变量以及端口映射的方式启动 Kafka 容器[^2]: ```bash docker run -d --name kafka \ -p 9092:9092 \ --link zookeeper:zookeeper \ --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ wurstmeister/kafka ``` 上述命令设置了几个重要的参数用于确保外部客户端能够成功访问 Kafka: - `-p 9092:9092`: 将宿主机的 9092 端口映射到容器内的相同端口上。 - `--link zookeeper:zookeeper`: 让 Kafka 能够找到同网络下的 ZooKeeper 服务。 - `KAFKA_ADVERTISED_LISTENERS`: 设置广告监听地址为 localhost 的 9092 端口以便于本地测试;如果是在集群环境中,则应替换为主机的真实 IP 地址或域名。 - `KAFKA_LISTENERS`: 指定内部监听接口为所有可用网卡上的 9092 端口。 - `KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR`: 设定了偏移量主题复制因子,在此例子中设为 1 表明不启用冗余备份机制。 #### 修改 Kafka 配置 有时可能还需要调整其他 Kafka 参数,这可通过进入正在运行的 Kafka 容器来进行操作[^3]: ```bash docker exec -it kafka /bin/bash ``` 一旦进入了容器的 shell 终端,就可以浏览 `/opt/bitnami/kafka/config/server.properties` 文件(具体路径取决于所使用的镜像版本),并对其中的各项属性做出相应更改。完成编辑之后记得保存文件,并重启 Kafka 服务以应用新的设定。 另外值得注意的是,当涉及到跨不同机器间的通信时,特别是从另一个 Docker 容器尝试连接至本机运行的服务实例情况下,可能会遇到网络连通性方面的问题。此时应当确认防火墙规则允许必要的流量通行,并且正确指定了目标服务器的可达地址[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值