当前位置: 首页 > 知识库问答 >
问题:

针对同一集群的多个kafka模式注册表

郑景胜
2023-03-14

我试图针对同一个kafka和zookeeper集群装载两个kafka模式注册表实例。但谢马一家的情况越来越复杂。当运行这两个注册表时,如果我使用api“kafka schema registry”注册一个架构,它似乎是在“schema registry ui other”中创建的,而不是像预期的那样显示在“kafka schema registry ui”中。我的配置是:

version: '2.1'

services:
  zoo1:
    image: zookeeper:3.4.9
    restart: unless-stopped
    hostname: zoo1
    ports:
      - "2181:2181"
    environment:
        ZOO_MY_ID: 1
        ZOO_PORT: 2181
        ZOO_SERVERS: server.1=zoo1:2888:3888
    volumes:
      - ./full-stack/zoo1/data:/data
      - ./full-stack/zoo1/datalog:/datalog


  kafka1:
    image: confluentinc/cp-kafka:5.3.1
    hostname: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - ./full-stack/kafka1/data:/var/lib/kafka/data
    depends_on:
      - zoo1

  kafka-schema-registry:
    image: confluentinc/cp-schema-registry:5.3.1
    hostname: kafka-schema-registry
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:19092
      SCHEMA_REGISTRY_HOST_NAME: kafka-schema-registry
      SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
      SCHEMA_REGISTRY_KAFKASTORE_GROUP_ID: "schema-registry"
    depends_on:
      - zoo1
      - kafka1
  kafka-schema-registry-other:
    image: confluentinc/cp-schema-registry:5.3.1
    hostname: kafka-schema-registry-other
    ports:
      - "8092:8081"
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:19092
      SCHEMA_REGISTRY_HOST_NAME: kafka-schema-registry-other
      SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
      SCHEMA_REGISTRY_SCHEMA_REGISTRY_ZK_NAMESPACE: schema_registry_other
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: "_schemas_other"
      SCHEMA_REGISTRY_KAFKASTORE_GROUP_ID: "schema-registry-other"
    depends_on:
      - zoo1
      - kafka1

  schema-registry-ui:
    image: landoop/schema-registry-ui:0.9.4
    hostname: kafka-schema-registry-ui
    ports:
      - "8001:8000"
    environment:
      SCHEMAREGISTRY_URL: http://kafka-schema-registry:8081/
      PROXY: "true"
    depends_on:
      - kafka-schema-registry

  schema-registry-ui-other:
    image: landoop/schema-registry-ui:0.9.4
    hostname: kafka-schema-registry-ui-other
    ports:
      - "8002:8000"
    environment:
      SCHEMAREGISTRY_URL: http://kafka-schema-registry-other:8081/
      PROXY: "true"
    depends_on:
      - kafka-schema-registry-other

  kafka-rest-proxy:
    image: confluentinc/cp-kafka-rest:5.3.1
    hostname: kafka-rest-proxy
    ports:
      - "8082:8082"
    environment:
      # KAFKA_REST_ZOOKEEPER_CONNECT: zoo1:2181
      KAFKA_REST_LISTENERS: http://0.0.0.0:8082/
      KAFKA_REST_SCHEMA_REGISTRY_URL: http://kafka-schema-registry:8081/
      KAFKA_REST_HOST_NAME: kafka-rest-proxy
      KAFKA_REST_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:19092
    depends_on:
      - zoo1
      - kafka1
      - kafka-schema-registry

  kafka-topics-ui:
    image: landoop/kafka-topics-ui:0.9.4
    hostname: kafka-topics-ui
    ports:
      - "8000:8000"
    environment:
      KAFKA_REST_PROXY_URL: "http://kafka-rest-proxy:8082/"
      PROXY: "true"
    depends_on:
      - zoo1
      - kafka1
      - kafka-schema-registry
      - kafka-rest-proxy
  zoonavigator-web:
    image: elkozmon/zoonavigator-web:0.5.1
    ports:
     - "8004:8000"
    environment:
      API_HOST: "zoonavigator-api"
      API_PORT: 9000
    links:
     - zoonavigator-api
    depends_on:
     - zoonavigator-api

  zoonavigator-api:
    image: elkozmon/zoonavigator-api:0.5.1
    environment:
      SERVER_HTTP_PORT: 9000
    depends_on:
      - zoo1

不可能有两个分离的模式注册表?

共有1个答案

符允晨
2023-03-14

您为架构注册服务器错误地定义了组ID,这意味着它们在同一个消费者组中,这意味着它们认为自己是同一集群的一部分。第二个架构注册服务器成为主服务器,因此执行所有写入。

您可以通过为两个模式注册表服务器设置环境变量SCHEMA\u REGISTRY\u SCHEMA\u REGISTRY\u GROUP\u ID来修复此问题。然后,它们将被视为两个不同的集群,这将按照您的预期工作。

 类似资料:
  • 我在不同的机器上运行具有不同的相同kafka代理集群的两个模式注册表。 该实例没有任何问题,运行良好。但是当我试图在DEV上创建一个新模式时,问题就开始了,它会转到QA。所以 是否不可能为同一个代理集群运行两个不同的模式注册表? 谢谢

  • 我使用来自Confluent的Kafka Connect来使用Kafka流并以拼花格式写入HDFS。我正在1个节点中使用架构注册表服务,它运行良好。现在我想将模式注册表分发到集群模式以处理故障转移。关于如何实现这一点的任何链接或片段都将非常有用。

  • 我有一个Kafka主题,我想用AVRO数据(目前是JSON)来填充它。我知道“正确”的方法是使用模式注册表,但出于测试目的,我想让它在没有它的情况下工作。 因此,我将AVRO数据作为数组[字节]发送,而不是常规的Json对象: 模式是在每个数据中启动的;我如何使它与kafka-connect一起工作?kafka-connect配置目前表现出以下属性(数据作为json.gz文件写入s3),我想编写P

  • 关于Avro序列化的消息是如何被Kafka和Schema Registry处理的,我想要了解的是,从这篇文章中,我了解到模式ID存储在每个消息中的可预测位置,因此我们似乎可以在同一个主题中拥有不同模式的消息,并且能够找到正确的模式,并基于此成功地反序列化它们。另一方面,我看到许多人似乎在使用“一个模式附加到一个主题”的表述,但这意味着每个主题都有一个模式。 那么哪一个是对的呢?我是否可以利用模式注

  • 我正在使用Protobuf为消息模式构建一个Kafka Streams应用程序。目前,应用程序本身只是从一个主题转移到另一个主题。我正在使用Confluent platform all-in-one docker compose文件在本地运行Kafka。 我的一个模式()使用字段,所以在启动我的应用程序之前,我已经注册了和在模式注册表上。 当我启动应用程序时,protobuf序列化程序运行一个名为

  • 我试图从REST代理发布json模式,但遇到异常 curl-k-x post-h“content-type:application/vnd.schemaregistry.v1+json”--数据“{”schema“:”{“type”:“object”,“properties”:{“firstname”:{“type”:“string”},“lastname”:{“type”:“string”},“