Режим кластера реестра конфлюентной схемы

Я использую Kafka Connect из Confluent для использования потока Kafka и записи в HDFS в формате паркета. Я использую службу реестра схем в 1 узле, и она работает нормально. Теперь я хочу передать реестр схем в кластерный режим для обработки отказа. Любая ссылка или фрагмент о том, как этого добиться, будут очень полезны.


person vijay kumar vijju    schedule 26.08.2016    source источник


Ответы (4)


Трудно найти, но мы рассмотрели эту архитектуру в нашей документации: http://docs.confluent.io/3.0.0/schema-registry/docs/deployment.html#multi-dc-setup

Немного процитирую документы (хотя вы должны прочитать документацию, в нее входит множество хороших советов по архитектуре и модуль Runbook для восстановления):

Предполагая, что у вас запущен реестр схем, вот рекомендуемые шаги для добавления экземпляров реестра схем в новый «подчиненный» центр обработки данных (назовите его DC B):

В DC ​​B убедитесь, что у Kafka unclean.leader.election.enable установлено значение false. В Kafka на DC B создайте тему _schemas. У него должен быть 1 раздел, kafkastore.topic.replication.factor, равный 3, и мин.insync.replicas как минимум 2. В DC B запустите MirrorMaker с Kafka в «главном» центре обработки данных в качестве источника и Kafka в DC B в качестве источника. цель. В файлах конфигурации реестра схемы на DC B установите kafkastore.connection.url и schema.registry.zk.namespace в соответствии с уже запущенными экземплярами и установите для master.eligibility значение false. Запустите свои новые экземпляры реестра схем с этими конфигурациями.

person Gwen Shapira    schedule 26.08.2016
comment
Спасибо за информацию, Гвен. Мой вариант использования - не мульти-DC. Мне просто нужно сделать мой текущий работающий реестр схем для обработки аварийного переключения, сделав его кластером (главные-подчиненные). У меня есть только один раз DC и один раз кластер Kafka. - person vijay kumar vijju; 27.08.2016
comment
Ах, в этом случае просто установите два сервера реестра схемы и укажите им один и тот же путь к zookeeper. Один из них автоматически станет лидером, а другой - последователем. Вы можете увидеть текущего лидера на пути / - person Gwen Shapira; 28.08.2016
comment
Спасибо, Гвен. Также дайте мне знать, как я могу использовать службу реестра схем. В настоящее время я использую http: // ‹registry-server-hostname›: порт. Теперь, после добавления дополнительного сервера, как я могу указать на общее имя при использовании службы? - person vijay kumar vijju; 29.08.2016
comment
@GwenShapira Предполагая, что у меня есть два экземпляра Schema Registry, один из которых прослушивает 8081, а другой - 18081; Оба ли они принимают GET запросов? Хотя я могу получить ответ при вызове kafka-host:8081/subjects, я не могу получить ответ для kafka-host:18081/subjects. Это нормальное поведение? - person Giorgos Myrianthous; 11.12.2018

Я использовал объединенный докер схемы и реестра image для формирования кластера.

docker run --restart always -d -p 8081:8081 --name=schema-registry-1 -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=ip1:2181,ip2:2181,ip3:2181 -e SCHEMA_REGISTRY_HOST_NAME=schema-registry-1 -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 -e SCHEMA_REGISTRY_DEBUG=true confluentinc/cp-schema-registry:5.2.1-1

docker run --restart always -d -p 8081:8081 --name=schema-registry-2 -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=ip1:2181,ip2:2181,ip3:2181 -e SCHEMA_REGISTRY_HOST_NAME=schema-registry-2 -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 -e SCHEMA_REGISTRY_DEBUG=true confluentinc/cp-schema-registry:5.2.1-1

docker run --restart always -d -p 8081:8081 --name=schema-registry-3 -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=ip1:2181,ip2:2181,ip3:2181 -e SCHEMA_REGISTRY_HOST_NAME=schema-registry-3 -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 -e SCHEMA_REGISTRY_DEBUG=true confluentinc/cp-schema-registry:5.2.1-1

После того, как это было запущено и запущено, я проверил, сформирован ли кластер схемы-реестра и успешно ли выбрано его лидера, проверив содержимое zookeeper.

$ docker exec -it zookeeper bash
# /usr/bin/zookeeper-shell localhost:2181
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is enabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[schema_registry, cluster, controller, brokers, zookeeper, admin, isr_change_notification, log_dir_event_notification, controller_epoch, kafka-manager, CruiseControlBrokerList, consumers, latest_producer_id_block, config]
[zk: localhost:2181(CONNECTED) 1] ls /schema_registry
[schema_registry_master, schema_id_counter]
[zk: localhost:2181(CONNECTED) 4] get /schema_registry/schema_registry_master
{"host":"schema-registry-1","port":8081,"master_eligibility":true,"scheme":"http","version":1}
#

Надеюсь это поможет.

person mchawre    schedule 19.07.2019

Вам просто нужно поместить это в connect-avro-distributed.properties, чтобы использовать реестр с несколькими схемами :

key.converter.schema.registry.url=http://node1:8081,http://node2:8081
value.converter.schema.registry.url=http://node1:8081,http://node2:8081

Надеюсь, это будет полезно для вас.

person Feiran    schedule 20.01.2017
comment
Хм, это действительно законно. Потому что, что, если вы хотите добавить новое соединение с новым реестром схемы и т. Д. Вам нужно будет добавлять новый URL-адрес схемы при каждом подключении, что означает - вам нужно будет перезапускать каждое отдельное соединение, которое может быть катастрофическим. Разве это не то, чего вы хотите избежать? - person iMajna; 21.02.2018

Не забудьте указать master.eligibility=true во всех узлах.

person Satish Bellapu    schedule 18.06.2020