Я изучаю варианты управления полным отказоустойчивостью центра обработки данных, когда кластер 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?