Docker 快速搭建 Kafka 集群

Docker 快速搭建 Kafka 集群

你是否想要一个 Kafka 集群,但又不想经历繁琐的手动配置过程?别担心,有了 Docker 和 Docker Compose,我们可以轻松快捷地搭建一个 Kafka 集群,让你能专注于享受实时数据流处理的乐趣。

环境与工具

软件环境:

  • Docker:v20.10.21
  • Docker Compose:v2.15.1

硬件要求:

  • 内存:至少 4GB
  • CPU:至少双核

前置信息:

  • 使用 Bitnami 提供的 Kafka 和 ZooKeeper Docker 镜像。
  • 通过 Docker Compose 搭建多节点 Kafka 集群,包括一个 ZooKeeper 和三个 Kafka Broker。

步骤一览

  1. 安装 Docker 和 Docker Compose
  2. 准备 Docker Compose 文件
  3. 配置 Kafka 和 ZooKeeper 环境
  4. 启动集群
  5. 测试 Kafka 集群

详细步骤

1. 安装 Docker 和 Docker Compose

如果你还没有安装 Docker 和 Docker Compose,先别慌,这里有详细的安装步骤。

Docker 安装步骤:

  1. 卸载旧版本 Docker(如果有):
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. 更新软件包列表并安装所需依赖:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  1. 添加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置 Docker 仓库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装 Docker:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 检查 Docker 安装是否成功:
docker --version

Docker Compose 安装步骤:

  1. 下载 Docker Compose 二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 为二进制文件添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  1. 检查 Docker Compose 安装是否成功:
docker-compose --version

2. 准备 Docker Compose 文件

接下来,让我们为 Kafka 集群编写 Docker Compose 配置文件。创建一个 docker-compose.yml 文件,并将以下内容填入其中:

# docker-compose.yml

version: '3.8'

services:
  zookeeper:
    image: bitnami/zookeeper:latest
    environment:
      - ZOO_ENABLE_AUTH=no
      - ALLOW_ANONYMOUS_LOGIN=yes
    ports:
      - "2181:2181"

  kafka1:
    image: bitnami/kafka:latest
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper

  kafka2:
    image: bitnami/kafka:latest
    environment:
      - KAFKA_BROKER_ID=2
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    ports:
      - "9093:9093"
    depends_on:
      - zookeeper

  kafka3:
    image: bitnami/kafka:latest
    environment:
      - KAFKA_BROKER_ID=3
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    ports:
      - "9094:9094"
    depends_on:
      - zookeeper

3. 配置 Kafka 和 ZooKeeper 环境

docker-compose.yml 文件中,我们为每个服务设定了必要的环境变量:

  • ZooKeeper: 使用 bitnami/zookeeper 镜像,并在 2181 端口上提供服务。
  • Kafka Broker: 每个 Kafka Broker 使用 bitnami/kafka 镜像,监听不同的端口:
    • kafka1 监听 9092
    • kafka2 监听 9093
    • kafka3 监听 9094

小提醒:

  1. 请确保 ALLOW_PLAINTEXT_LISTENER 参数设置为 yes,以便允许明文传输。
  2. 如果你是为了生产环境,请务必启用加密连接和身份验证。

4. 启动集群

现在是时候让 Kafka 集群运转起来了。在 docker-compose.yml 文件所在目录执行以下命令:

docker-compose up -d

检查 Kafka 集群状态:

docker-compose ps

你应该会看到类似这样的输出:

    Name                  Command               State           Ports
------------------------------------------------------------------------
kafka-cluster_kafka1_1   /opt/bitnami/script ...   Up      0.0.0.0:9092->9092/tcp
kafka-cluster_kafka2_1   /opt/bitnami/script ...   Up      0.0.0.0:9093->9093/tcp
kafka-cluster_kafka3_1   /opt/bitnami/script ...   Up      0.0.0.0:9094->9094/tcp
kafka-cluster_zookeeper_1 /opt/bitnami/script ...   Up      0.0.0.0:2181->2181/tcp

5. 测试 Kafka 集群

让我们看看这个集群是否真的能工作吧!

1. 创建一个主题:

通过 kafka1 容器创建一个名为 test-topic 的主题:

docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --create --topic test-topic --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 1

2. 列出主题:

检查主题是否创建成功:

docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --list --bootstrap-server kafka1:9092

你应该会看到:

test-topic

3. 发送测试消息:

通过 kafka1 容器向 test-topic 发送一些消息:

docker exec -it kafka-cluster_kafka1_1 kafka-console-producer.sh --topic test-topic --bootstrap-server kafka1:9092

输入以下内容作为测试消息:

Hello Kafka
This is a test message

使用 Ctrl+C 退出。

4. 消费测试消息:

在另一个终端窗口,通过 kafka1 容器消费 test-topic 中的消息:

docker exec -it kafka-cluster_kafka1_1 kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka1:9092

你应该会看到:

Hello Kafka
This is a test message

注意事项与提示

  1. 端口冲突: 确保 9092, 90939094 端口没有被其他服务占用。
  2. ZooKeeper 检查: 可以通过 localhost:2181 确保 ZooKeeper 正常运行。
  3. Kafka 检查: 确保每个 Kafka Broker 正常运行并监听正确的端口。

好了,现在你有了自己的 Kafka 集群,尽情玩耍吧!有什么疑问或者建议,欢迎留言。

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Docker搭建kafka集群的过程可以参考以下步骤。首先,需要依赖zookeeper来管理kafka集群的状态和元数据。因此,在搭建kafka集群之前,需要先搭建一个zookeeper集群。可以使用Docker创建一个新的网络,并在该网络上启动一个zookeeper集群。接下来,创建一个docker-compose文件(例如docker-compose-zk.yml),在该文件中定义zookeeper集群的配置和启动参数。然后,使用docker-compose命令启动zookeeper集群。接下来,创建一个新的docker-compose文件(例如docker-compose-kafka.yml),在该文件中定义kafka集群的配置和启动参数。在这个文件中,需要挂载一些文件,这些文件包括kafka的配置文件和数据目录。挂载这些文件的目的是为了保留kafka集群的状态和数据。最后,使用docker-compose命令启动kafka集群。在集群启动后,可以安装kafka-manager来管理kafka集群。可以创建一个新的docker-compose文件(例如docker-compose-kafka-manager.yml),在该文件中定义kafka-manager的配置和启动参数。使用docker-compose命令启动kafka-manager。配置kafka-manager连接到kafka集群,并进行测试。\[1\] 在搭建过程中,可能会遇到一些问题。例如,如果之前已经安装过旧版本的docker,可能会导致安装新版本docker时出现冲突的错误。解决这个问题的方法之一是使用wget命令下载docker-ce.repo文件,并将其放置在/etc/yum.repos.d/目录下。这样可以更新docker的安装源,然后重新安装docker。\[2\]\[3\] #### 引用[.reference_title] - *1* [Docker搭建kafka集群](https://blog.csdn.net/weixin_48412846/article/details/128724377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker搭建kafka集群](https://blog.csdn.net/fxh13579/article/details/81299185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值