реестр нескольких схем kafka для одного кластера

Я пытаюсь подключить два экземпляра реестра схемы kafka к одному и тому же кластеру kafka и zookeeper. Но схемы смешиваются. Если при запуске двух реестров я зарегистрирую схему с помощью 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

невозможно иметь реестр с двумя отдельными схемами?


person Kiddo    schedule 25.10.2019    source источник
comment
Это должно быть возможно, хотя я не уверен, что понимаю, зачем вам это нужно .... Если вы действительно хотите увидеть, какой реестр используется, вы должны использовать консоль-потребитель в двух схемах. темы.   -  person OneCricketeer    schedule 26.10.2019


Ответы (1)


Вы неправильно определяете идентификатор группы для серверов реестра схемы, что означает, что они находятся в одной группе потребителей, что означает, что они считают себя частью одного кластера. Второй сервер реестра схемы становится основным и, таким образом, выполняет все операции записи.

Вы можете исправить это, установив переменную среды SCHEMA_REGISTRY_SCHEMA_REGISTRY_GROUP_ID для обоих серверов реестра схемы. Затем они будут считаться двумя разными кластерами, и это будет работать так, как вы ожидаете.

person WheresAlice    schedule 26.10.2019