Docker中Kafka容器创建/更新Topic支持多分区

前提

自行通过docker部署好kafka,并启动相关容器。

假设Topic为http_capture。

bash 复制代码
#docker-kafka
kafka_dir=/opt/docker/kafka/build
sudo rm -rf ${kafka_dir}/*
cat > ${kafka_dir}/docker-compose.yml <<EOF
version: "3.3"
services:
  zookeeper:
    image: zookeeper:3.5.5
    restart: always
    container_name: dsms_zookeeper
    ports:
      - "2181:2181"
    environment:
      - ZOO_MY_ID=1

  kafka:
    image: wurstmeister/kafka:2.13-2.8.1
    restart: always
    container_name: dsms_kafka
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_ADVERTISED_HOST_NAME=${local_ip}
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS=36000
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${local_ip}:9092
      - KAFKA_LISTENERS=PLAINTEXT://:9092
    ports:
      - "9092:9092"
    expose:
      - "9092"
    depends_on:
      - zookeeper
EOF
cd ${kafka_dir} && sudo /opt/bin/docker-compose up -d

Docker中Kafka容器创建/更新Topic支持多分区

检测Kafka运行正常后,如果Topic为http_capture的主题存在,则更新分区为5个,若不存在Topic,则新建。

bash 复制代码
#!/bin/bash

# 检查 Kafka 容器是否正常运行
while ! docker ps --format '{{.Names}}' | grep -q "^dsms_kafka$"; do
    echo "等待 Kafka 容器启动..."
    sleep 5
done

echo "Kafka 容器已成功启动."

# 在 Kafka 容器内执行命令,将结果保存到临时文件中
docker exec dsms_kafka kafka-topics.sh --list --zookeeper zookeeper:2181 > /tmp/kafka_topics_list.txt

# 检查 http_capture 主题是否存在
if grep -q "^http_capture$" /tmp/kafka_topics_list.txt; then
    echo "更新 http_capture 主题分区数量..."
    docker exec dsms_kafka kafka-topics.sh --alter --topic http_capture --partitions 5 --zookeeper zookeeper:2181
else
    echo "创建新的 http_capture 主题..."
    docker exec dsms_kafka kafka-topics.sh --create --topic http_capture --partitions 5 --replication-factor 1 --zookeeper zookeeper:2181
    echo "新的 http_capture 主题创建成功."
fi

# 删除临时文件
rm -f /tmp/kafka_topics_list.txt
复制代码
相关推荐
张忠琳6 分钟前
【k3s】AutoK3s v0.9.3 —— Part 7 辅助模块超深度逐行分析
云原生·容器·kubernetes·k3s·autok3s
TDengine (老段)17 分钟前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
张忠琳9 小时前
【k3s】AutoK3s v0.9.3 Part 1 入口与 CLI 命令模块 — 超深度逐行分析之三
云原生·容器·kubernetes·k3s·autok3s
apgk115 小时前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
fatcoder15 小时前
玩转Docker 06 — 容器网络
前端·后端·docker
xiaoxiangsiyan16 小时前
企业日常运维高频应用服务全解
运维·网络·云原生·容器·dns
AR_xsy16 小时前
docker--资源配额 配置
运维·docker·容器
国际云,接待17 小时前
Docker 容器突然退出、服务莫名重启:从 OOMKilled 到内存泄漏的生产排查手册
运维·docker·容器
橙-极纪元17 小时前
把docker的镜像文件从一台服务器中,迁移至另一台服务器
服务器·docker·容器
RobinDevNotes19 小时前
K8s+Ray+vLLM打穿大模型全生命周期(有实践步骤)
人工智能·云原生·容器·kubernetes·生活·vllm