如何配置双Kafka集群连接同一Schema Registry(Docker场景)
两个独立Kafka集群共用Schema Registry的配置方案
可行性说明
可以实现两个独立Kafka集群共用同一个Schema Registry,但需明确:Schema Registry自身的元数据(存储schema的_registry-schemas topic)只能托管在其中一个Kafka集群中,另一个集群的生产者/消费者通过HTTP接口与Schema Registry交互即可,无需Schema Registry直接连接该集群。
具体配置步骤
指定Schema Registry的元数据存储集群
选择其中一个Kafka集群作为Schema Registry的元数据存储载体,比如选择broker1所在的集群,将schemaregistry服务的SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS参数设置为该集群的bootstrap地址:SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: broker1:9092验证集群与Schema Registry的交互配置
你的docker-compose中已经为两个broker配置了KAFKA_SCHEMA_REGISTRY_URL: schemaregistry:8081,这个配置是正确的——两个集群的生产者/消费者会通过这个HTTP地址访问Schema Registry,完成schema的注册和查询,只要网络可达就能正常工作。
关键注意事项
- 存储Schema Registry元数据的集群必须保证高可用性,一旦该集群不可用,Schema Registry将无法读取或写入schema元数据,影响所有依赖它的生产者/消费者。
- 第二个集群不需要被Schema Registry的Kafka Store配置引用,仅需通过HTTP接口访问Schema Registry即可。
修改后的完整schemaregistry服务配置
schemaregistry: image: confluentinc/cp-schema-registry:7.5.2 container_name: schemaregistry networks: - local_kafka environment: SCHEMA_REGISTRY_HOST_NAME: schemaregistry SCHEMA_REGISTRY_LISTENERS: "http://0.0.0.0:8081" SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: broker1:9092 SCHEMA_REGISTRY_DEBUG: "true" SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _registry-schemas ports: - "8081:8081"
内容的提问来源于stack exchange,提问作者J. Snow
相关产品推荐
相关产品推荐

