Каково определенное поведение кластера Galera с 3 узлами после того, как один узел умирает?

Я читал документацию по кластеру Galera: http://galeracluster.com/documentation-webpages/genindex.html

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

Мой вопрос в том, что происходит с минимальным кластером после отказа одного узла.

  • Изменится ли состояние кластера на недоступный?
  • Будут ли 2 оставшихся узла реплицироваться?
  • Будет ли добавление нового узла по-прежнему обрабатываться автоматически?

person Ovesh    schedule 23.04.2014    source источник


Ответы (1)


Это зависит от того, как узел покидает кластер. В приведенных ниже ситуациях предполагается наличие кластера из трех узлов, из которого один узел уходит, а все узлы соединены коммутатором Ethernet.

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

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

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

Если узел попытается подключиться к активному разделу в кластере, он подключится нормально. Если он может подключиться только к неактивному разделу, он будет ждать настраиваемое количество времени, пытаясь связаться с активным разделом.

Дополнительную информацию можно найти на странице http://galeracluster.com/documentation-webpages/recovery.html.

person G-Nugget    schedule 23.04.2014
comment
Фантастика. Какой у вас источник, конкретно первые 3 абзаца? - person Ovesh; 24.04.2014
comment
В основном опыт работы с galera и другим программным обеспечением для кластеризации. Я добавил ссылку на свой ответ на некоторую соответствующую информацию на сайте galera. - person G-Nugget; 26.04.2014