Как определяется поведение кластера Galera с 3 узлами после смерти одного узла?
Я читал документацию по кластеру Galera: http://galeracluster.com/documentation-webpages/genindex.html
Я продолжаю видеть рекомендацию (или, в некоторых местах, явное ограничение), что минимальный кластер составляет 3 узла.
У меня вопрос, что происходит с минимальным кластером после сбоя одного узла.
- Изменится ли состояние кластера на недоступное?
- Будут ли реплицироваться 2 оставшихся узла?
- Будет ли добавление нового узла обрабатываться автоматически?
1 ответ
Это зависит от того, как узел покидает кластер. Приведенные ниже ситуации предполагают наличие трех узлового кластера с одним уходящим узлом и всеми узлами, соединенными коммутатором Ethernet.
Если один узел корректно отключается из-за перезапуска службы или проблемы с репликацией, тогда кластер становится кластером из двух узлов, и ничего серьезного не происходит. Кластер продолжит нормально функционировать, и, если сервер, который ушел, не будет обслуживать запросы, перерыв в работе не будет.
Если узел пропадает из-за проблем с сетью или иным образом уходит, не сказав об этом остальной части кластера, тогда могут возникнуть проблемы. Для функционирования кластера ему необходим кворум - большинство активных узлов в кластере. Два других узла будут продолжать нормально функционировать, поскольку их раздел имеет более половины известных узлов, но оставленный узел перестанет принимать запросы, когда обнаружит, что он больше не контактирует с активным разделом. В этом случае, предполагая, что приложение может получить доступ к двум активным узлам, сбой может оставаться в основном незамеченным.
Основная причина, по которой три сервера являются рекомендуемым минимумом, заключается в увеличении вероятности существования кворума в случае проблем с сетью. Если в кластере есть два узла (или, в более общем случае, любое четное число узлов), сбой одного сетевого соединения может привести к приостановке работы кластера, поскольку он может создать два раздела с половиной узлов, ни один из которых не имеет кворума. Нечетное число узлов означает, что один сбой сетевого соединения не может вызвать приостановку работы кластера, поскольку всегда будет кворум. Однако, если имеется более одного сбоя сетевого соединения, все может стать более сложным, но только раздел с кворумом будет работать нормально.
Если узел пытается подключиться к активному разделу в кластере, он присоединится нормально. Если он может подключиться только к неактивному разделу, он будет ждать настраиваемое количество времени при попытке связаться с активным разделом.
Дополнительная информация доступна по адресу http://galeracluster.com/documentation-webpages/recovery.html.