Docker 快速搭建 Kafka 集群

打印 上一主题 下一主题

主题 567|帖子 567|积分 1701

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。
步骤一览


  • 安装 Docker 和 Docker Compose
  • 预备 Docker Compose 文件
  • 配置 Kafka 和 ZooKeeper 情况
  • 启动集群
  • 测试 Kafka 集群
详细步骤

1. 安装 Docker 和 Docker Compose

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

  • 卸载旧版本 Docker(如果有):
  1. sudo apt-get remove docker docker-engine docker.io containerd runc
复制代码

  • 更新软件包列表并安装所需依靠:
  1. sudo apt-get update
  2. sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
复制代码

  • 添加 Docker 官方 GPG 密钥:
  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
复制代码

  • 设置 Docker 堆栈:
  1. 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
复制代码

  • 安装 Docker:
  1. sudo apt-get update
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io
复制代码

  • 查抄 Docker 安装是否成功:
  1. docker --version
复制代码
Docker Compose 安装步骤:

  • 下载 Docker Compose 二进制文件:
  1. 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
复制代码

  • 查抄 Docker Compose 安装是否成功:
  1. docker-compose --version
复制代码
2. 预备 Docker Compose 文件

接下来,让我们为 Kafka 集群编写 Docker Compose 配置文件。创建一个 docker-compose.yml 文件,并将以下内容填入其中:
  1. # docker-compose.yml
  2. version: '3.8'
  3. services:
  4.   zookeeper:
  5.     image: bitnami/zookeeper:latest
  6.     environment:
  7.       - ZOO_ENABLE_AUTH=no
  8.       - ALLOW_ANONYMOUS_LOGIN=yes
  9.     ports:
  10.       - "2181:2181"
  11.   kafka1:
  12.     image: bitnami/kafka:latest
  13.     environment:
  14.       - KAFKA_BROKER_ID=1
  15.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
  16.       - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
  17.       - ALLOW_PLAINTEXT_LISTENER=yes
  18.     ports:
  19.       - "9092:9092"
  20.     depends_on:
  21.       - zookeeper
  22.   kafka2:
  23.     image: bitnami/kafka:latest
  24.     environment:
  25.       - KAFKA_BROKER_ID=2
  26.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093
  27.       - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
  28.       - ALLOW_PLAINTEXT_LISTENER=yes
  29.     ports:
  30.       - "9093:9093"
  31.     depends_on:
  32.       - zookeeper
  33.   kafka3:
  34.     image: bitnami/kafka:latest
  35.     environment:
  36.       - KAFKA_BROKER_ID=3
  37.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094
  38.       - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
  39.       - ALLOW_PLAINTEXT_LISTENER=yes
  40.     ports:
  41.       - "9094:9094"
  42.     depends_on:
  43.       - zookeeper
复制代码
3. 配置 Kafka 和 ZooKeeper 情况

在 docker-compose.yml 文件中,我们为每个服务设定了须要的情况变量:


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

    • kafka1 监听 9092
    • kafka2 监听 9093
    • kafka3 监听 9094

小提醒:

  • 请确保 ALLOW_PLAINTEXT_LISTENER 参数设置为 yes,以便允许明文传输。
  • 如果你是为了生产情况,请务必启用加密毗连和身份验证。
4. 启动集群

现在是时间让 Kafka 集群运转起来了。在 docker-compose.yml 文件所在目录执行以下命令:
  1. docker-compose up -d
复制代码
查抄 Kafka 集群状态:
  1. docker-compose ps
复制代码
你应该会看到类似这样的输出:
  1.     Name                  Command               State           Ports
  2. ------------------------------------------------------------------------
  3. kafka-cluster_kafka1_1   /opt/bitnami/script ...   Up      0.0.0.0:9092->9092/tcp
  4. kafka-cluster_kafka2_1   /opt/bitnami/script ...   Up      0.0.0.0:9093->9093/tcp
  5. kafka-cluster_kafka3_1   /opt/bitnami/script ...   Up      0.0.0.0:9094->9094/tcp
  6. kafka-cluster_zookeeper_1 /opt/bitnami/script ...   Up      0.0.0.0:2181->2181/tcp
复制代码
5. 测试 Kafka 集群

让我们看看这个集群是否真的能工作吧!
1. 创建一个主题:
通过 kafka1 容器创建一个名为 test-topic
的主题:
  1. docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --create --topic test-topic
  2. --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 1
复制代码
2. 列出主题:
查抄主题是否创建成功:
  1. docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --list --bootstrap-server kafka1:9092
复制代码
你应该会看到:
  1. test-topic
复制代码
3. 发送测试消息:
通过 kafka1 容器向 test-topic
发送一些消息:
  1. docker exec -it kafka-cluster_kafka1_1 kafka-console-producer.sh --topic test-topic
  2. --bootstrap-server kafka1:9092
复制代码
输入以下内容作为测试消息:
  1. Hello Kafka
  2. This is a test message
复制代码
使用 Ctrl+C 退出。
4. 消耗测试消息:
在另一个终端窗口,通过 kafka1 容器消耗 test-topic
中的消息:
  1. docker exec -it kafka-cluster_kafka1_1 kafka-console-consumer.sh --topic test-topic
  2. --from-beginning --bootstrap-server kafka1:9092
复制代码
你应该会看到:
  1. Hello Kafka
  2. This is a test message
复制代码
留意事项与提示


  • 端口辩论: 确保 9092, 9093 和 9094 端口没有被其他服务占用。
  • ZooKeeper 查抄: 可以通过 localhost:2181 确保 ZooKeeper 正常运行。
  • Kafka 查抄: 确保每个 Kafka Broker 正常运行并监听正确的端口。
好了,现在你有了自己的 Kafka 集群,尽情玩耍吧!有什么疑问大概建议,接待留言。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表