kafka配置
This commit is contained in:
@@ -71,6 +71,11 @@ else
|
||||
info "创建并启动 Kafka 容器(首次拉取镜像可能较慢)..."
|
||||
KAFKA_CLUSTER_ID="MkU3OEVBNTcwNTJENDM2Qk"
|
||||
|
||||
# bitnamilegacy/kafka 容器内以 uid=1001 运行,宿主目录需提前授权
|
||||
mkdir -p "${DATA_DIR}/kafka"
|
||||
chown -R 1001:1001 "${DATA_DIR}/kafka" 2>/dev/null || \
|
||||
chmod -R 777 "${DATA_DIR}/kafka" # 无 chown 权限时退回 777
|
||||
|
||||
docker run -d \
|
||||
--name dev-kafka \
|
||||
--restart unless-stopped \
|
||||
@@ -91,37 +96,45 @@ else
|
||||
fi
|
||||
start_docker_logger "dev-kafka"
|
||||
|
||||
# 等待 Kafka broker 真正就绪(轮询,最长 60s)
|
||||
# 等待 Kafka broker 真正就绪(轮询,最长 90s)
|
||||
info "等待 Kafka broker 就绪..."
|
||||
_kafka_ready=0
|
||||
for _i in $(seq 1 30); do
|
||||
if docker exec dev-kafka kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--list &>/dev/null; then
|
||||
_kafka_ready=1
|
||||
break
|
||||
for _i in $(seq 1 45); do
|
||||
printf " 第 %d 次探测 (%ds)...\r" "$_i" "$(( _i * 2 ))"
|
||||
# 先快速检测端口是否开放(避免 kafka-topics.sh 长时间挂起)
|
||||
if docker exec dev-kafka bash -c "timeout 2 bash -c 'cat < /dev/null > /dev/tcp/localhost/9092'" &>/dev/null; then
|
||||
# 端口开放后再验证 broker 是否真正接受请求
|
||||
if docker exec dev-kafka timeout 5 kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--list &>/dev/null; then
|
||||
_kafka_ready=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
printf " 第 %d 次探测...\r" "$_i"
|
||||
sleep 2
|
||||
done
|
||||
echo "" # 清除 \r 留下的行
|
||||
if [[ $_kafka_ready -eq 1 ]]; then
|
||||
success "Kafka 已就绪 :${KAFKA_PORT}"
|
||||
else
|
||||
error "Kafka 60s 内未就绪,请检查日志: ./deploy-test/logs.sh kafka"
|
||||
error "Kafka 90s 内未就绪,请检查日志: ./deploy-test/logs.sh kafka"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 初始化必要 Topics
|
||||
step "Kafka Topics 初始化"
|
||||
TOPICS=(toRedis toMongo toPush toOfflinePush)
|
||||
# 先获取已存在的 topic 列表,避免逐个查询
|
||||
_existing_topics=$(docker exec dev-kafka kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 --list 2>/dev/null || true)
|
||||
|
||||
for topic in "${TOPICS[@]}"; do
|
||||
if docker exec dev-kafka kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--list 2>/dev/null | grep -q "^${topic}$"; then
|
||||
info " topic 已存在: $topic"
|
||||
if echo "$_existing_topics" | grep -q "^${topic}$"; then
|
||||
info " topic 已存在: $topic,跳过"
|
||||
else
|
||||
docker exec dev-kafka kafka-topics.sh \
|
||||
--create \
|
||||
--if-not-exists \
|
||||
--topic "$topic" \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--partitions 8 \
|
||||
@@ -146,6 +159,11 @@ elif docker ps -a --format '{{.Names}}' | grep -q '^dev-etcd$'; then
|
||||
success "Etcd 已启动 :${ETCD_PORT}"
|
||||
else
|
||||
info "创建并启动 Etcd 容器..."
|
||||
# bitnamilegacy/etcd 容器内以 uid=1001 运行,宿主目录需提前授权
|
||||
mkdir -p "${DATA_DIR}/etcd"
|
||||
chown -R 1001:1001 "${DATA_DIR}/etcd" 2>/dev/null || \
|
||||
chmod -R 777 "${DATA_DIR}/etcd"
|
||||
|
||||
docker run -d \
|
||||
--name dev-etcd \
|
||||
--restart unless-stopped \
|
||||
|
||||
Reference in New Issue
Block a user