Репликация данных из кластера Kafka в центры событий с помощью Apache Kafka Mirror Maker 2
В этом руководстве показано, как реплицировать данные из существующего кластера Kafka в Центры событий Azure с помощью Mirror Maker 2.
Примечание.
Этот пример можно найти на сайте GitHub.
В этом руководстве описано следующее:
- Создание пространства имен в Центрах событий Azure
- Настройка или использование существующего кластера Kafka
- Настройка Kafka Mirror Maker 2
- Запуск Kafka Mirror Maker 2
Введение
Apache Kafka MirrorMaker 2.0 (MM2) предназначен для упрощения зеркального отображения или репликации тем из одного кластера Kafka в другой. Mirror Maker использует платформу Kafka Connect для упрощения настройки и масштабирования. Более подробные сведения о средстве Kafka MirrorMaker см. в руководстве по зеркальному отображению Kafka и средству MirrorMaker.
Так как Центры событий Azure совместим с протоколом Apache Kafka, вы можете использовать Mirror Maker 2 для репликации данных между существующим кластером Kafka и пространством имен Центров событий.
Mirror Maker 2 динамически обнаруживает изменения разделов и гарантирует синхронизацию свойств исходного и целевого раздела, включая смещения и секции. Его можно использовать для репликации двухнаправленных данных между кластером Kafka и пространством имен Центров событий.
Необходимые компоненты
В рамках этого руководства вам потребуются:
- Прочтите статью Центры событий Azure для Apache Kafka.
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
- Комплект разработчика Java (JDK 1.7+)
- В Ubuntu выполните команду
apt-get install default-jdk
, чтобы установить JDK. - Обязательно настройте переменную среды JAVA_HOME так, чтобы она указывала на папку, в которой установлен пакет JDK.
- В Ubuntu выполните команду
- Скачивание и установка двоичного архива Maven
- В Ubuntu выполните команду
apt-get install maven
, чтобы установить Maven.
- В Ubuntu выполните команду
- Git
- В Ubuntu выполните команду
sudo apt-get install git
, чтобы установить Git.
- В Ubuntu выполните команду
- Распределение Apache Kafka
- Скачайте предпочтительное распределение Apache Kafka (которое должно содержать дистрибутив Mirror Maker 2.)
Создание пространства имен в Центрах событий Azure
Для отправки и получения данных из любой службы Центров событий требуется пространство имен Центров событий. См. раздел Создание концентратора событий для получения инструкций по созданию пространства имен и концентратора событий. Скопируйте строку подключения к Центрам событий для дальнейшего использования.
Клонирование примера проекта
Теперь, когда у вас есть строка подключения к Центрам событий, клонируйте репозиторий Центров событий Azure для Kafka и перейдите в нем к подпапке mirror-maker-2
:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2
Настройка или использование существующего кластера Kafka
Если у вас нет существующего кластера Kafka, используйте краткое руководство по настройке кластера Kafka с требуемыми параметрами (или использование существующего кластера Kafka). В целях тестирования можно также создать несколько разделов в созданном кластере Kafka и опубликовать в них данные.
Если у вас уже есть существующий кластер Kafka локально или в управляемой облачной службе Kafka, его можно использовать для репликации существующих данных в Центры событий.
Настройка Kafka Mirror Maker 2
Дистрибутив Apache Kafka поставляется с скриптом, который входит в connect-mirror-maker.sh
пакет с библиотекой Kafka, реализующей распределенный кластер Mirror Maker 2. Он управляет рабочими ролей Connect внутренне на основе файла конфигурации. Внутренний драйвер MirrorMaker создает и обрабатывает пары каждого соединителя — MirrorSource Connector, MirrorSink Connector, MirrorCheckpoint Connector и MirrorHeartbeat Connector.
Чтобы настроить Mirror Maker 2 для репликации данных, необходимо обновить файл
kafka-to-eh-connect-mirror-maker.properties
конфигурации Mirror Maker 2, чтобы определить топологию репликации.kafka-to-eh-connect-mirror-maker.properties
В файле конфигурации определите псевдонимы кластера, которые планируется использовать для кластера Kafka (источник) и Центров событий (назначение).# cluster aliases clusters = source, destination
Затем укажите сведения о подключении для источника, который является кластером Kafka.
source.bootstrap.servers = your-kafka-cluster-hostname:9092 #source.security.protocol=SASL_SSL #source.sasl.mechanism=PLAIN #source.sasl.jaas.config=<replace sasl jaas config of your Kafka cluster>;
Укажите сведения о подключении для назначения, которое является созданным пространством имен Центров событий.
destination.bootstrap.servers = <your-enventhubs-namespace>.servicebus.windows.net:9093 destination.security.protocol=SASL_SSL destination.sasl.mechanism=PLAIN destination.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='$ConnectionString' password='<Your Event Hubs namespace connection string.>';
Включите поток репликации из исходного кластера Kafka в целевое пространство имен Центров событий.
source->destination.enabled = true source->destination.topics = .*
Обновите коэффициент репликации удаленных разделов и внутренних разделов, создаваемых Mirror Maker в месте назначения.
replication.factor=3 checkpoints.topic.replication.factor=3 heartbeats.topic.replication.factor=3 offset-syncs.topic.replication.factor=3 offset.storage.replication.factor=3 status.storage.replication.factor=3 config.storage.replication.factor=3
Затем скопируйте
kafka-to-eh-connect-mirror-maker.properties
файл конфигурации в каталог конфигурации дистрибутива Kafka и сможете запустить скрипт Mirror Maker 2 с помощью следующей команды../bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
После успешного выполнения скрипта вы увидите разделы и события Kafka, которые реплицируются в пространство имен Центров событий.
Чтобы убедиться, что события отправляются в Центры событий с поддержкой Kafka, просмотрите статистику входящего трафика в портал Azure или запустите потребителя в центрах событий.
Примеры
См. следующие примеры на сайте GitHub:
Если вы размещаете Apache Kafka в Kubernetes с помощью оператора CNCF Strimzi, можно использовать пример Strimzi Mirror Maker 2 для центров событий.
Следующие шаги
Дополнительные сведения о концентраторах событий для Kafka см. в следующих статьях:
- Migrating to Azure Event Hubs for Apache Kafka Ecosystems (Переход в Центры событий Azure для экосистем Apache Kafka)