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

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

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

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

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


person Nicolas Henneaux    schedule 28.02.2018    source источник
comment
в зоопарке нет роли «арбитра», а есть «последователи», которые не участвуют в выборах, но синхронизируют данные от лидера. мое предложение состоит в том, чтобы развернуть пять узлов. два в 1-м, два во 2-м, один в 3-м.   -  person sel-fish    schedule 09.03.2018
comment
@sel-fish какие данные отправляются на узел зоопарка? если узел в 3-м DC не участвует в выборах, если вы потеряете 1-й или 2-й DC, выборы не могут быть успешными (2 узла голосуют при кворуме из 3)   -  person Nicolas Henneaux    schedule 13.03.2018
comment
извините, посмотрите мой предыдущий комментарий, я имею в виду «наблюдатель», а не «последователь». наличие «наблюдателя» не влияет на допустимость отказа узла в кластере. что я сказал, разверните пять узлов. два в 1-м, два во 2-м, один в 3-м, каждый из пяти узлов участвует в выборах.   -  person sel-fish    schedule 13.03.2018
comment
Хорошо, это было предложение в вопросе, но каково это влияние? с каждым узлом zk нужно связываться для каждой новой записи в Kafka?   -  person Nicolas Henneaux    schedule 13.03.2018
comment
При записи данных в кластер zk с упомянутым выше развертыванием одна операция записи должна обеспечивать постоянство как минимум на 3 узлах, поэтому задержка между 1-м и 3-м IDC (или 2-м и 3-м IDC, я предполагаю, что 3-й IDC более далеко от двух других) не имеет значения. Задержка определяется только задержкой между 1-м и 2-м IDC.   -  person sel-fish    schedule 13.03.2018
comment
Мой вопрос о связи между kafka и zk не внутри zk.   -  person Nicolas Henneaux    schedule 13.03.2018


Ответы (1)


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

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

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

Подробнее о зависимости между Kafka и Zookeeper можно узнать на странице Часто задаваемые вопросы по Kafka и ответ на Quora от коммитера Kafka, работающего в Слиянии.

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

person Nicolas Henneaux    schedule 14.03.2018
comment
Эта конфигурация (DC1-DC2 с малой задержкой и 2 Kafka/1 Zookeeper от DC плюс третий дальний DC с одним узлом zookeeper) теперь работает в рабочей среде более 2 лет без проблем с отказоустойчивостью. - person Nicolas Henneaux; 15.10.2020