Docker中Kafka容器創(chuàng)建/更新Topic支持多分區(qū)實(shí)現(xiàn)方式
前提
自行通過(guò)docker部署好kafka,并啟動(dòng)相關(guān)容器。
假設(shè)Topic為http_capture。
#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容器創(chuàng)建/更新Topic支持多分區(qū)
檢測(cè)Kafka運(yùn)行正常后,如果Topic為http_capture的主題存在,則更新分區(qū)為5個(gè),若不存在Topic,則新建。
#!/bin/bash
# 檢查 Kafka 容器是否正常運(yùn)行
while ! docker ps --format '{{.Names}}' | grep -q "^dsms_kafka$"; do
echo "等待 Kafka 容器啟動(dòng)..."
sleep 5
done
echo "Kafka 容器已成功啟動(dòng)."
# 在 Kafka 容器內(nèi)執(zhí)行命令,將結(jié)果保存到臨時(shí)文件中
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 主題分區(qū)數(shù)量..."
docker exec dsms_kafka kafka-topics.sh --alter --topic http_capture --partitions 5 --zookeeper zookeeper:2181
else
echo "創(chuàng)建新的 http_capture 主題..."
docker exec dsms_kafka kafka-topics.sh --create --topic http_capture --partitions 5 --replication-factor 1 --zookeeper zookeeper:2181
echo "新的 http_capture 主題創(chuàng)建成功."
fi
# 刪除臨時(shí)文件
rm -f /tmp/kafka_topics_list.txt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝opengauss數(shù)據(jù)庫(kù)配置過(guò)程詳解
這篇文章主要為大家介紹了docker安裝opengauss數(shù)據(jù)庫(kù)配置過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
使用portainer連接遠(yuǎn)程docker的教程
Portainer是一個(gè)輕量級(jí)的docker環(huán)境管理UI,可以用來(lái)管理docker宿主機(jī)和docker swarm集群,這篇文章主要介紹了使用portainer連接遠(yuǎn)程docker的方法,需要的朋友可以參考下2020-03-03
Docker?exec?的實(shí)現(xiàn)原理介紹
這篇文章主要介紹了Docker?exec的實(shí)現(xiàn)原理,詳細(xì)解讀了docker?exec這個(gè)操作背后,Linux?Namespace更具體的工作原理,這種通過(guò)操作系統(tǒng)進(jìn)程相關(guān)的知識(shí),逐步剖析Docker容器的方法,需要的朋友可以參考一下2022-04-04
docker+jenkins+gitee配置持續(xù)集成部署方式
這篇文章主要介紹了docker+jenkins+gitee配置持續(xù)集成部署方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
利用Docker搭建Laravel開(kāi)發(fā)環(huán)境的完整步驟
這篇文章主要給大家介紹了關(guān)于如何利用Docker搭建Laravel開(kāi)發(fā)環(huán)境的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Docker Compose從安裝到使用詳細(xì)過(guò)程
Docker Compose是Docker官方提供的一個(gè)工具,用于定義和運(yùn)行多容器 Docker應(yīng)用程序,本文給大家介紹Docker Compose從安裝到使用詳細(xì)過(guò)程,感興趣的朋友跟隨小編一起看看吧2025-09-09

