Репликация нескольких центров обработки данных и локальный кворум?

Я создал кластер из 6 узлов. 3 узла в Eu west1 и 3 узла в EU west2 Я установил местоположение для каждой группы узлов, например: --locality = region = europe, datacenter = west1. Я также установил реплику на 6, чтобы иметь все диапазоны и все данные на каждом узле. . Что будет, если связь между дата-центрами пропадет и весь кластер выйдет из строя? Я попытался убить 3 узла в одном из центров обработки данных, и кластер не работает, потому что большинство узлов не работает, а кворум меньше 4. Можно ли заставить 2 центра данных работать с их локальным кворумом 2/3

Я также немного поиграл с настройками репликации, и иногда кластер становится здоровым, если я убиваю 3 узла из 6 и смог ли я записать в кластер. Иногда я могу читать только из кластера. Кластер работает с репликами 5 и 3 узлов, убитых из 6. Все еще платит этим, но если кто-то может дать мне больше информации, будет очень полезно.

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


person ldbl    schedule 21.06.2017    source источник


Ответы (2)


Для полной работоспособности CockroachDB требуется большинство реплик, что означает > half, а не >= half. Чтобы пережить потерю полноценного центра обработки данных или региона, у вас должно быть три DC / региона, а не два. Попробуйте запустить два узла в каждом из трех регионов вместо трех узлов в двух регионах.

Можно ли заставить 2 центра обработки данных работать с их локальным кворумом 2/3

Ни для одной таблицы (потому что было бы невозможно гарантировать согласованность, если бы каждый центр обработки данных мог действовать изолированно от другого). Вы настроили репликацию данных на все шесть реплик, что означает, что для создания кворума требуется четыре реплики. Если вы хотите, чтобы каждый центр обработки данных мог работать независимо от другого, вам потребуются две отдельные таблицы, каждая из которых настроена для размещения в одном из центров обработки данных.

person Ben Darnell    schedule 21.06.2017
comment
Формула: (n - 1)/2, где n - количество узлов. Пока это число равно 0 или больше, кластер выживает. И чем больше число, тем лучше! - person eduncan911; 01.07.2017

Спасибо за ответ, чтобы прояснить кое-что. Но похоже, вы поняли мою точку зрения и то, чего я хочу достичь. Но насколько я понимаю, если у меня есть узел 2x3 в 2 разных DC, если один DC выходит из строя. У меня есть 3 активных узла для кворума, мне нужно как минимум 4. N / 2 +1. Так что, если у меня 3x3, я могу потерять один DC, потому что, если у меня есть 2 DC, у меня будет кворум. И последний вопрос, если я не установлю репликацию на 9, если я потеряю 3 узла, некоторые в одном DC, некоторые диапазоны будут недоступны, верно?

person ldbl    schedule 22.06.2017