You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.NET Aspire时Schema Registry无法连接KRaft模式Kafka的问题排查

可行测试方案

1. 验证Kafka容器内部访问性

  • 进入Schema Registry容器内部,用Kafka服务名而非localhost测试连通性:
    docker exec -it <schema-registry-container-id> bash
    kafka-topics --list --bootstrap-server <kafka-service-name>:9092
    
    注:<kafka-service-name>是Aspire生成的Kafka服务名称(如kafka),容器内部默认使用9092端口通信,而非宿主映射的29092。

2. 修正Kafka监听器与广告地址配置

当前KAFKA_ADVERTISED_LISTENERS配置会导致容器内服务无法正确寻址Kafka,需调整为:

  • KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092
  • KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<kafka-service-name>:9092,PLAINTEXT_HOST://localhost:29092

3. 检查Schema Registry核心配置

  • 确保KAFKA_BOOTSTRAP_SERVERS和SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS均指向<kafka-service-name>:9092,而非localhost:29092。
  • 确认SCHEMA_REGISTRY_HOST_NAME设置为Schema Registry的服务名(如schema-registry)。

4. 测试容器间网络连通性

  • 在Schema Registry容器内ping Kafka服务名,验证DNS解析:
    ping <kafka-service-name>
    
  • 用nc工具测试端口开放情况:
    nc -zv <kafka-service-name> 9092
    

5. 排查日志细节

  • 查看Kafka容器日志,确认监听器正常启动:
    docker logs <kafka-container-id>
    
    需找到类似Listening on PLAINTEXT://0.0.0.0:9092的日志条目。
  • 查看Schema Registry日志,定位具体错误(如DNS解析失败、连接超时):
    docker logs <schema-registry-container-id>
    

6. 简化配置做基础验证

暂时脱离Aspire,用Docker Compose手动启动服务验证配置有效性:

version: '3'
services:
  kafka:
    image: confluentinc/confluent-local:7.6.0
    ports:
      - "29092:29092"
    environment:
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
      KAFKA_LISTENERS_CONTROLLER: CONTROLLER://0.0.0.0:9093
      KAFKA_ADVERTISED_LISTENERS_CONTROLLER: CONTROLLER://kafka:9093
  schema-registry:
    image: confluentinc/cp-schema-registry:7.6.1
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:9092
      SCHEMA_REGISTRY_HOST_NAME: schema-registry
      SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
    depends_on:
      - kafka

启动后测试Schema Registry状态:

curl http://localhost:8081/subjects

若返回空数组或正常响应,说明基础配置无问题,再回到Aspire同步配置。

内容的提问来源于stack exchange,提问作者Erik83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:17:23