Выборы лидера Кафки в мульти-округе с арбитром / свидетелем / наблюдателем

Я хотел бы развернуть кластер Kafka в двух центрах обработки данных с одинаковым количеством узлов на каждом контроллере домена. Первый DC используется в активном режиме, а второй в пассивном режиме.

Например, предположим, что оба центра обработки данных имеют 3 узла с 2 репликами в синхронизации (ISR) на первом DC и одним ISR на втором DC.

Возможно ли иметь третий DC, содержащий узел арбитра / свидетеля / наблюдателя, чтобы в случае отказа одного DC выборы лидера могли быть успешными с правильным результатом с точки зрения согласованности? У mongoDB есть такая функция, которая называется Replica set Arbiter.

Как насчет развертывания ZooKeeper на трех центрах обработки данных? Насколько я понимаю, ZooKeeper не хранит данные Kafka, и к ним не следует обращаться для каждой новой записи в теме Kafka, т.е. вы не платите задержку третьему DC для каждой новой записи.

1 ответ

Решение

Есть одна презентация на саммите Kafka 2017. Одного центра обработки данных недостаточно: масштабирование Apache Kafka в нескольких центрах обработки данных говорит об этой настройке. Существует также некоторая интересная информация в документе Confluent Disaster Recovery для развертываний с использованием нескольких центров обработки данных Apache Kafka®. Он говорит, что он может работать, и они назвали его узлом-наблюдателем, но он также говорит, что никто никогда не пробовал этого.

Zookeeper отслеживает следующие метаданные для Kafka (0.9.0+).

  • Выбор контроллера - контроллер является одним из брокеров и отвечает за поддержание отношений лидер / последователь для всех разделов. Когда узел выключается, именно контроллер сообщает другим репликам стать лидерами разделов, чтобы заменить лидеров разделов на уходящем узле. Zookeeper используется для выбора контроллера, убедитесь, что есть только один, и выберите новый, если он выйдет из строя.
  • Членство в кластере - какие брокеры живы и являются частью кластера? это также управляется через ZooKeeper.
  • Конфигурация темы - какие есть переопределения для этой темы, где расположены разделы и т. Д.
  • Квоты - сколько данных каждому клиенту разрешено читать и записывать
  • ACL - кому разрешено читать и писать в какую тему

Более подробно о зависимости между Kafka и Zookeeper в Kafka FAQ и ответе в Quora от комиссара Kafka, работающего в Confluent.

Из ресурсов, которые я прочитал, может работать установка с двумя DC (Kafka плюс Zookeeper) и узлом Zookeeper арбитр / свидетель / наблюдатель на третьем DC с высокой задержкой, но я не нашел никаких ресурсов, которые бы на самом деле экспериментировали с ним.

Другие вопросы по тегам