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

Kafka及Schema Registry启动失败:ZooKeeper连接拒绝问题求助

问题解决:Kafka/Schema Registry连接ZooKeeper失败

错误原因

在Docker Compose的容器网络环境中,localhost指向容器自身,而非宿主机或其他服务容器。你当前的Kafka和Schema Registry配置中,使用localhost:2181尝试连接ZooKeeper,自然会被拒绝——因为这两个容器内部并没有运行ZooKeeper服务。

修复步骤

修改Docker Compose配置中的两处ZooKeeper连接地址,将localhost替换为ZooKeeper的服务名zookeeper:

1. 调整Kafka的ZooKeeper连接配置

找到Kafka服务的KAFKA_ZOOKEEPER_CONNECT环境变量,修改为:

KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"

2. 调整Schema Registry的ZooKeeper连接配置

找到Schema Registry服务的SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL环境变量,修改为:

- SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zookeeper:2181

完整修复后的Docker Compose配置

version: "3.7"
services:
  postgres:
    image: debezium/postgres:13
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=docker
      - POSTGRES_PASSWORD=docker
      - POSTGRES_DB=exampledb

  zookeeper:
    image: confluentinc/cp-zookeeper:5.5.3
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
    ports:
      - 2181:2181

  kafka:
    image: confluentinc/cp-enterprise-kafka:5.5.3
    depends_on: [zookeeper]
    environment:
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9991
    ports:
      - 9092:9092

  debezium:
    image: debezium/connect:1.4
    environment:
      BOOTSTRAP_SERVERS: kafka:9092
      GROUP_ID: 1
      CONFIG_STORAGE_TOPIC: connect_configs
      OFFSET_STORAGE_TOPIC: connect_offsets
      KEY_CONVERTER: io.confluent.connect.avro.AvroConverter
      VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
    depends_on: [kafka]
    ports:
      - 8083:8083

  schema-registry:
    image: confluentinc/cp-schema-registry:5.5.3
    environment:
      - SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=zookeeper:2181
      - SCHEMA_REGISTRY_HOST_NAME=schema-registry
      - SCHEMA_REGISTRY_LISTENERS=http://schema-registry:8081,http://localhost:8081
    ports:
      - 8081:8081
    depends_on: [zookeeper, kafka]

额外说明

depends_on仅控制容器启动顺序,不保证依赖服务完全就绪。如果仍出现连接问题,可以添加健康检查或使用wait-for-it等脚本确保ZooKeeper和Kafka启动完成后再启动后续服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:01:12