Кафка Дата Центр отказоустойчивости - PullRequest
0 голосов
/ 26 сентября 2019

Я изучаю варианты управления полным отказоустойчивостью центра обработки данных, когда кластер Kafka охватывает 2 DC, и в то же время гарантирует доступность разделов.Наличие DC кластера является предпочтительным для нас по сравнению с добавленной сложностью Mirrormaker / Replicator, и у нас есть высокоскоростная связь, доступная между ними, чтобы уменьшить задержку.

Кафка имеет концепцию осведомленности о стойке, поэтому репликираздел будет автоматически распределен между обеими стойками, однако я изо всех сил пытаюсь увидеть конфигурацию репликации / min-isr, которая не приведет к меньшей доступности / потере данных после аварийного переключения стойки.

Предполагая приведенный ниже простейший сценарий, Я ищу конфигурацию, которая может справиться с полной потерей стойки 1, не делая разделы недоступными / не вызывая потерю данных (возможно, за счет более высокой задержки, если это необходимо):

  • 4 брокера на 2 стойках
  • Репликация = 4
  • Минимум синхронных реплик = 2
  • Источник подтверждения = все

Все работает нормально, если все 4 реплики хранятся всинхронизировать с acks = all, однако, поскольку минимальное количество синхроимпульсов равно 2, возможен случай, когда оба ISRтолько в стойке 1?В случае полного отказа стойки 1 не было бы никаких ISR / лидера вообще, таким образом, никакие сообщения не могли быть произведены / прочитаны из темы?

Broker    DC/Rack   Topic Replica
1          1         1 (in sync)
2          1         2 (in sync)  <-- min.insync.replicas=2 + acks=all compatible
3          2         3 (out of sync)
4          2         4 (out of sync)  <-- not 2 ISR's in rack 2

Я что-то пропустил или есть какая-то другая конфигурациячто позволит полный отказ стойки?Возможна ли полная поломка стойки без риска нечистых выборов или снижения доступности с Kafka?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...