配置带SSL认证的Schema Registry与Kafka时出现监听器错误
嘿,我帮你分析下这个问题——你遇到的No listener configured with requested scheme SSL错误,核心是Schema Registry的监听器配置和内部通信协议没对上,虽然你已经做了不少配置,但有几个关键地方需要调整:
1. 对齐内部实例通信协议和监听器的Scheme
你当前的配置里:
listeners=https://0.0.0.0:443 schema.registry.inter.instance.protocol=SSL
这里有个小误区:listeners用的是https(Schema Registry作为REST服务的HTTPS协议),但你把内部实例之间的通信协议设成了SSL——这是Kafka用的协议,不是Schema Registry REST通信的协议。得把内部通信协议改成HTTPS,和监听器的Scheme对应上:
schema.registry.inter.instance.protocol=HTTPS
2. 把SSL配置绑定到HTTPS监听器
如果你的Schema Registry只启用HTTPS监听器,最好给SSL相关配置加上listeners.https.前缀,让配置明确关联到HTTPS监听器(避免和Kafka客户端的SSL配置混淆),比如:
listeners.https.ssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks listeners.https.ssl.keystore.location=/home/ec2-user/kafka.client.keystore.jks listeners.https.ssl.keystore.password=my-pass listeners.https.ssl.key.password=my-key listeners.https.ssl.enabled.protocols=TLSv1.2 listeners.https.ssl.client.auth=false
(至于security.protocol=SSL和kafkastore.bootstrap.servers=SSL://<my-brokers>这两个是对的,因为它们是给Schema Registry连接Kafka用的Kafka客户端配置,不用改)
3. 确认schema.registry.url的可访问性
你的schema.registry.url=https://<IP>:443要确保这个IP是Schema Registry自身能访问到的(和listeners里的0.0.0.0兼容),没问题的话就保留即可。
4. 重启验证
修改完配置后,重新执行启动命令:
./schema-registry-start ../etc/schema-registry/schema-registry.properties
如果还是有问题,可以再检查日志里的细节,比如证书路径是否正确、密码是否匹配,但根据当前的错误提示,上面的配置调整应该能解决核心的监听器Scheme不匹配问题。
内容的提问来源于stack exchange,提问作者user3310186

