Можно ли разрезать кластер Кафка пополам? - PullRequest
0 голосов
/ 10 февраля 2019

Сценарий: у вас есть Kafka-Cluster в разных DC, но они настроены как один кластер.Так что нет зеркалирования через MirrorMaker или что-то вроде шляпы.ДЦ не очень далеко друг от друга.Но они физически разделены.

Что вы должны сделать, чтобы обеспечить отказоустойчивость кластера на ОБА СТОРОНАХ, если соединение между этими двумя DC отключено?Так что с ОБА стороны производители и потребители все еще должны работать.

Я бы предположил: вам нужно несколько Zookeepers с обеих сторон и несколько узлов Kafka.

Но достаточно ли этого?Исцеляется ли кластер после повторного подключения?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 февраля 2019

Я предполагаю, что ваши центры обработки данных, которые "не очень далеко друг от друга", в основном являются зонами доступности (AZ).

Распространено кластеризация по нескольким AZ.Однако, как правило, нежелательно или невозможно, чтобы каждый «кусочек» мог жить сам по себе.

Непосредственной проблемой является Zookeeper, который по своей конструкции предотвращает сценарии с разделением мозга.Таким образом, если ZK-кластер разделен, то будет работать только один «срез» (в лучшем случае).Таким образом, брокеры, которые находятся на стороне неработающих кластеров ZK, будут не функционировать.

Тогда, скажем, можно было заставить обе стороны продолжать работать.Что происходит, когда вы снова присоединяетесь к обеим сторонам?

Данные, вероятно, расходятся, поскольку клиенты записывают данные каждой стороне отдельно.Теперь у вас может быть один и тот же раздел с разными сообщениями для одного и того же смещения, и нет способа разрешить конфликт, поскольку оба параметра являются «действительными».

Я надеюсь, что это показывает, почему это не является возможным решением.На практике, если AZ отключается, он не функционирует до тех пор, пока не будет переведен обратно в оперативный режим.

Клиенты, которые были подключены к автономному AZ, должны повторно подключиться к другому AZ (используя несколько серверов начальной загрузки) и клиентам, которые былив отказавшем АЗ следует выполнить повторную инициализацию в другой.

При правильной настройке Кафка может пережить сбой АЗ (хотя на практике лучше иметь 3 АЗ) и сохранять все ресурсы доступными.Также в этом сценарии кластер автоматически вернется в хорошее состояние, когда завершится сбой AZ.

...