Mirror Maker 2 в ADS Control
В данной статье описывается настройка репликации топиков на удаленный кластер с использованием механизма Mirror Maker 2 при помощи ADS Control.
Основные понятия, используемые в данной статье:
-
Исходный кластер (source) — кластер, из которого происходит репликация топиков.
-
Целевoй кластер (target) — кластер, на который происходит репликация топиков.
-
Исходный топик — топик, созданный на исходном кластере и предназначенный для репликации в целевой кластер.
-
Топик-реплика — топик, автоматически созданный на целевом кластере и имеющий такое же содержимое и метаданные, как и исходный топик.
ПРИМЕЧАНИЕ
|
Создание коннекторов для Mirror Maker 2
Для осуществления простой репликации топика на удаленный кластер используются коннекторы, созданные на базе сервиса Kafka Connect:
-
MirrorSourceConnector
-
MirrorCheckpointConnector
Для создания коннекторов при помощи ADS Control необходимо:
-
В пользовательском интерфейсе ADS Control выбрать нужный кластер ADS.
Выбор кластера в интерфейсе ADS ControlВыбор кластера в интерфейсе ADS Control -
На открывшейся странице в списке кластеров Kafka Connect выбрать кластер ADS.
Открытие страницы с коннекторами Kafka ConnectОткрытие страницы с коннекторами Kafka Connect -
На открывшейся странице кликнуть Create Connector.
Создание коннектора Kafka ConnectСоздание коннектора Kafka Connect -
Выбрать нужный коннектор для создания.
Выбор коннектора Kafka Connect для созданияВыбор коннектора Kafka Connect для создания -
Заполнить параметры конфигурации коннектора. При необходимости воспользоваться информацией о конфигурации сервиса Kafka Connect в статье Конфигурационные параметры ADS. Вы можете использовать заполнение конфигурации в виде файла JSON. Для этого включите соответствующий переключатель.
Конфигурация коннектораКонфигурация коннектораJSON-файл конфигурации коннектораJSON-файл конфигурации коннектораПример содержимого JSON-файла для простой конфигурации коннекторов для архитектуры Active/Standby{ "connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector", "source.cluster.alias": "source", "target.cluster.alias": "dest", "name": "<connector_name>", "target.cluster.bootstrap.servers": "<dest_cluster_bootstrap>", "tasks.max": "4", "topics": "<test_topic_name>", "source.cluster.bootstrap.servers": "<source_cluster_bootstrap>" }
Атрибут Описание connector.class
Имя класса для коннектора. Должен быть подклассом
org.apache.kafka.connect.connector.Connector
source.cluster.alias
Название исходного кластера, которое будет использоваться в репликации
target.cluster.alias
Название целевого кластера, которое будет использоваться в репликации
name
Название коннектора, которое будет использоваться в репликации
target.cluster.bootstrap.servers
Bootstrap-servers целевого кластера, применяется с портом 9092
tasks.max
Максимальное количество задач, которые можно использовать для коннектора
topics
Список исходных топиков для использования, разделенных запятыми
source.cluster.bootstrap.servers
Bootstrap-servers исходного кластера, применяется с портом 9092
-
После заполнения кликнуть Save и получить сообщение об успешном создании коннектора.
Сообщение об успешном создании коннектораСообщение об успешном создании коннектора -
Проверить, что на странице Connectors for ads отображаются созданные коннекторы в рабочем статусе. Статус определяется в зависимости от индикатора перед названием коннектора:
-
— коннектор/задача запущены;
-
— коннектор/задача были административно приостановлены;
-
— ошибка в работе коннектора/задачи;
-
— коннектор/задача еще не назначена процессу.
Созданные коннекторыСозданные коннекторы -
Проверка репликации топиков
После успешного завершения конфигурации коннекторов на стороне исходного кластера создается служебный топик mm2-offset-syncs.<target_cluster_alias>.internal
, где <target_cluster_alias>
соответствует обозначению целевого кластера, введенному при конфигурации коннектора.
Топик mm2-offset-syncs
заполняется MirrorSourceConnector, а затем используется MirrorCheckpointConnector для изменения смещений группы потребителей.
Для того чтобы проверить наличие служебного топика mm2-offset-syncs
, необходимо ввести на любом брокере исходного кластера команду для вывода списка топиков:
$ /usr/lib/kafka/bin/kafka-topics.sh --list --bootstrap-server hostname:9092
В списке топиков должен присутствовать нужный топик:
__consumer_offsets mm-connect-configs mm-connect-offsets mm-connect-status mm2-offset-syncs.dest.internal
Создание реплицируемого исходного топика и запись в него сообщений происходит на стороне исходного кластера.
Для создания исходного топика необходимо ввести команду:
$ /usr/lib/kafka/bin/kafka-topics.sh --create --topic <test_topic_name> --bootstrap-server hostname:9092
где <test_topic_name>
— имя исходного топика, введенное при
конфигурации коннектора.
Для записи сообщений в исходный топик необходимо ввести команду:
$ /usr/lib/kafka/bin/kafka-console-producer.sh --topic <test_topic_name> --bootstrap-server hostname:9092
После записи сообщений в исходный топик на странице Connectors for ads в пользовательском интерфейсе ADS Control появляется название топика-реплики в строке коннектора MirrorSourceConnector в формате <source_cluster_alias>.<test_topic_name>
, где:
-
<source_cluster_alias>
— соответствующее обозначение исходного кластера, введенное при конфигурации коннектора. -
<test_topic_name>
— имя исходного топика, введенное при конфигурации коннектора.
Также топик-реплика появляется в списке топиков на целевом кластере.
Для того чтобы считать сообщения из топика-реплики на целевом кластере, необходимо ввести команду:
$ /usr/lib/kafka/bin/kafka-console-consumer.sh --topic <source_cluster_alias>.<test_topic_name> --from-beginning --bootstrap-server hostname:9092
Считываемые сообщения в целевом кластере полностью повторяют записанные в исходном кластере.