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

Docker Compose中带SASL认证的Schema Registry启动失败问题排查

解决Schema Registry因SASL认证启动失败问题

问题场景

通过Docker Compose部署包含Kafka、Zookeeper和Schema Registry的集群并配置SASL认证后,Zookeeper和Kafka Broker运行正常,但Schema Registry启动后立即退出,容器状态显示为exited (1)。

容器状态输出:

NAME                COMMAND                  SERVICE             STATUS              PORTS
broker              "/etc/confluent/dock…"   broker              running             9092/tcp, 0.0.0.0:9093->9093/tcp, :::9093->9093/tcp
schema-registry     "/etc/confluent/dock…"   schema-registry     exited (1)           
zookeeper           "/bin/bash -c 'echo …"   zookeeper           running             0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 2888/tcp, 3888/tcp

核心报错信息:

===> Running preflight checks ... 
===> Check if Kafka is healthy ...
[2023-05-23 08:07:14,063] ERROR Error while running kafka-ready. (io.confluent.admin.utils.cli.KafkaReadyCommand)
org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
...
Caused by: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

已配置的kafka_client_jaas.conf内容:

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required 
  username="kafka" 
  password="kafka-secret";
};

报错原因分析

Schema Registry启动时会先执行预检查脚本kafka-ready,该脚本会创建KafkaAdminClient连接Broker验证健康状态。当前仅通过SCHEMA_REGISTRY_OPTS给Schema Registry主进程设置了JAAS配置路径,但预检查脚本不会读取这个变量,而是读取通用的KAFKA_OPTS环境变量,导致脚本无法找到JAAS配置,进而启动失败。

解决方案

在Schema Registry的环境变量中添加KAFKA_OPTS,值与SCHEMA_REGISTRY_OPTS一致,确保预检查脚本和主进程都能加载到JAAS配置。

修改后的Schema Registry服务Docker Compose配置片段:

schema-registry:
  image: confluentinc/cp-schema-registry
  volumes:
    - ./data/kafka_client_jaas.conf:/opt/kafka_client_jaas.conf
  hostname: schema-registry
  container_name: schema-registry
  depends_on:
    - broker
  ports:
    - "8081:8081"
  networks:
    - network
  environment:
    SCHEMA_REGISTRY_HOST_NAME: schema-registry
    SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'broker:9093'
    SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: WARN
    SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: SASL_PLAINTEXT
    SCHEMA_REGISTRY_KAFKASTORE_SASL_MECHANISM: PLAIN
    SCHEMA_REGISTRY_OPTS: "-Djava.security.auth.login.config=/opt/kafka_client_jaas.conf"
    KAFKA_OPTS: "-Djava.security.auth.login.config=/opt/kafka_client_jaas.conf" # 新增此环境变量

执行以下命令重新部署:

docker-compose down
docker-compose up -d

验证容器状态,Schema Registry应正常运行:

docker-compose ps

内容的提问来源于stack exchange,提问作者A. Vasyukhin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 09:40:04