Mirror Maker 2 в ADS Control

В данной статье описывается настройка репликации топиков на удаленный кластер с использованием механизма Mirror Maker 2 при помощи ADS Control.

Основные понятия, используемые в данной статье:

  • Исходный кластер (source) — кластер, из которого происходит репликация топиков.

  • Целевoй кластер (target) — кластер, на который происходит репликация топиков.

  • Исходный топик — топик, созданный на исходном кластере и предназначенный для репликации в целевой кластер.

  • Топик-реплика — топик, автоматически созданный на целевом кластере и имеющий такое же содержимое и метаданные, как и исходный топик.

ПРИМЕЧАНИЕ
  • Репликация показана на основе архитектуры Active/Standby, когда целевoй кластер находится в пассивном режиме (не имеет подключенных к нему потребителей и производителей) и получает только реплицированные данные.

  • Перед настройкой Mirror Maker 2 в исходном и целевом кластере должен быть установлен и настроен сервис Kafka Connect. Kafka Connect доступен к установке в ADS начиная с версии 1.7.1.

Создание коннекторов для Mirror Maker 2

Для осуществления простой репликации топика на удаленный кластер используются коннекторы, созданные на базе сервиса Kafka Connect:

  • MirrorSourceConnector

  • MirrorCheckpointConnector

Для создания коннекторов при помощи ADS Control необходимо:

  1. В пользовательском интерфейсе ADS Control выбрать нужный кластер ADS.

    Выбор кластера в интерфейсе ADS Control
    Выбор кластера в интерфейсе ADS Control
    Выбор кластера в интерфейсе ADS Control
    Выбор кластера в интерфейсе ADS Control
  2. На открывшейся странице в списке кластеров Kafka Connect выбрать кластер ADS.

    Открытие страницы с коннекторами Kafka Connect
    Открытие страницы с коннекторами Kafka Connect
    Открытие страницы с коннекторами Kafka Connect
    Открытие страницы с коннекторами Kafka Connect
  3. На открывшейся странице кликнуть Create Connector.

    Создание коннектора Kafka Connect
    Создание коннектора Kafka Connect
    Создание коннектора Kafka Connect
    Создание коннектора Kafka Connect
  4. Выбрать нужный коннектор для создания.

    Выбор коннектора Kafka Connect для создания
    Выбор коннектора Kafka Connect для создания
    Выбор коннектора Kafka Connect для создания
    Выбор коннектора Kafka Connect для создания
  5. Заполнить параметры конфигурации коннектора. При необходимости воспользоваться информацией о конфигурации сервиса Kafka Connect в статье Конфигурационные параметры ADS. Вы можете использовать заполнение конфигурации в виде файла JSON. Для этого включите соответствующий переключатель.

    Конфигурация коннектора
    Конфигурация коннектора
    Конфигурация коннектора
    Конфигурация коннектора
    JSON-файл конфигурации коннектора
    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

  6. После заполнения кликнуть Save и получить сообщение об успешном создании коннектора.

    Сообщение об успешном создании коннектора
    Сообщение об успешном создании коннектора
    Сообщение об успешном создании коннектора
    Сообщение об успешном создании коннектора
  7. Проверить, что на странице Connectors for ads отображаются созданные коннекторы в рабочем статусе. Статус определяется в зависимости от индикатора перед названием коннектора:

    • green — коннектор/задача запущены;

    • yellow — коннектор/задача были административно приостановлены;

    • red — ошибка в работе коннектора/задачи;

    • unassigned — коннектор/задача еще не назначена процессу.

    Созданные коннекторы
    Созданные коннекторы
    Созданные коннекторы
    Созданные коннекторы

Проверка репликации топиков

После успешного завершения конфигурации коннекторов на стороне исходного кластера создается служебный топик 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

Считываемые сообщения в целевом кластере полностью повторяют записанные в исходном кластере.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней