Назад | Перейти на главную страницу

Запуск HA Consul в двух центрах обработки данных

Один из моих клиентов хотел бы запустить consul в двух центрах обработки данных. Оба дата-центра Берлин и Франкфурт должен привести к настройке высокой доступности, при которой один центр обработки данных может быть отключен или умер, не затрагивая другой центр обработки данных.

Оба центра обработки данных должны иметь одинаковое состояние согласованности данных, и мы столкнулись с некоторыми проблемами.

Попытка 1: кластер с узлом в Берлине и узлом во Франкфурте, общий вариант «центр обработки данных»

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

Попытка 2: кластер с серверным узлом в Берлине и агентом во Франкфурте, общий вариант «центр обработки данных»

В этой настройке, когда происходит разделение, узел сервера в Берлине все еще работает, но узел агента во Франкфурте перестает работать. Это действительно вызвало вопрос, а какая польза от агентов в консуле.

Попытка 3: два кластера с параметром "центр обработки данных", установленным на два разных значения.

Если для одного кластера / сервера в Берлине задан параметр центра обработки данных «Берлин», а для другого кластера / сервера во Франкфурте задано значение «Франкфурт», хранилище сегментируется. Оба работают после разделения, но ключи в Берлине недоступны из Франкфурта и наоборот.

Для этого необходимо как-то обновить оба кластера. Одно из решений - небольшой демон, основанный на консул-копия, но это добавляет ко всей настройке единую точку отказа, чего мы хотели бы избежать.

Попытка 4: получить еще один внешний центр обработки данных

Единственное, что мы могли придумать, - это запустить третий внешний узел в надежде, что когда-нибудь выйдет из строя не более одного узла. Это открывает новые возможности для размышлений (резервное копирование, безопасность, обновления и т. Д.), Которых мы бы хотели избежать.


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

Однако это действительно заставило нас задуматься, действительно ли Consul предпочитает отказ в обслуживании возможной несогласованности.

Мы что-то упустили? Есть ли другой способ создания автоматически реплицированного Consul-Cluster в двух центрах обработки данных, который по-прежнему работает в ситуациях с разделенным мозгом или при отказе центра обработки данных?