Репликация данных во вторичный кластер

Завершено

Kafka часто развертывается в нескольких средах для аварийного восстановления, обеспечения высокой доступности и гибридных сценариев развертывания локально и в облаке. Для этих сценариев требуется репликация данных из одного экземпляра Kafka в другой с помощью функции зеркального отображения Apache Kafka. Зеркальное отображение можно запустить как непрерывный процесс или периодически использовать для переноса данных из одного кластера в другой.

Зеркальное отображение нельзя рассматривать как средство обеспечения отказоустойчивости. Из-за разного смещения элементов в разделах основного и вторичного кластеров они не могут использоваться как взаимозаменяемые.

Как работает зеркальное отображение?

Зеркальное отображение выполняется с помощью средства MirrorMaker (часть Apache Kafka). Это средство использует записи из разделов в основном кластере, а затем создает локальную копию во вторичном. MirrorMaker использует один или несколько получателей, которые считывают основной кластер, и производитель, который записывает данные в локальный (вторичный) кластер.

В наиболее полезной настройке зеркального отображения для аварийного восстановления используются кластеры Kafka в разных регионах Azure. Для этого виртуальные сети, в которых находятся кластеры, находятся в одноранговом узле.

На следующей схеме показан процесс зеркального отображения и обмен данными между кластерами.

Mirroring Apache Kafka architecture

Основной и вторичный кластеры могут отличаться количеством узлов и секций. Смещения в темах также отличаются. Зеркальное отображение сохраняет значение ключа, который используется для секционирования, поэтому порядок записей сохраняется вместе с этими значениями.

Зеркальное отображение в пределах сети

Чтобы реализовать зеркальное отображение между кластерами Kafka в разных сетях, следует учитывать следующее.

  • Шлюзы: сети должны взаимодействовать на уровне TCP/IP.
  • Серверная адресация: можно выбрать адреса узлов кластера, используя их IP-адреса или полные доменные имена.
    • IP-адреса: если вы настраиваете кластеры Kafka для использования объявления IP-адресов, продолжить установку зеркального отображения можно, используя IP-адреса узлов брокера и узлов Zookeeper.
    • Доменные имена: если вы не настраиваете кластеры Kafka для объявления IP-адресов, кластеры должны иметь возможность подключаться друг к другу с помощью полных доменных имен (FQDN). Потребуется установить в каждой сети сервер службы доменных имен (DNS), который настроен для пересылки запросов в другие сети. При создании виртуальной сети Azure вместо использования автоматического DNS, предоставленного сетью, необходимо указать пользовательские DNS-сервер и IP-адрес для сервера. Когда виртуальная сеть будет готова, создайте виртуальную машину Azure, использующую этот IP-адрес, а затем установите и настройте на ней программное обеспечение DNS.

Предупреждение

Создайте и настройте пользовательский DNS-сервер, прежде чем устанавливать HDInsight в виртуальной сети. HDInsight не нужно дополнительно настраивать для использования DNS-сервера, настроенного для виртуальной сети.