- Database - информация хранится/изменяется в СУБД;
- Сonsensus - информация хранится в памяти.
Принцип работы:
Допущение: для простоты восприятия принципа работы будем считать, что данные хранятся в виртуальной таблице в памяти мастера (никакого отношения к таблицам СУБД не имеет).
Все сервера кластера периодически отправляют информацию о статусе, так называемые лизы (от слова leasing) мастеру кластера, которую он кладёт в "виртуальную" таблицу в памяти, а от него в ответ получают текущую копию виртуальной таблицы - делается это для обеспечения отказоустойчивость при выходе из строя мастера. Мастер выбирается всеми запущенными серверами кластера. Сервер становится мастером после одобрения большинства. Если Node Manager сообщает, что статус сервера:
- остановлен (SHUTDOWN), то потенциальный мастер считает, что остановленный сервер одобрил его кандидатуру, как мастера;
- неизвестен (UNKNOWN), то потенциальный мастер считает, что сервер не одобрил его кандидатуру;
- запускается (STARTING), то состоится перевыбор мастера (так же это случится при выходе из строя самого мастера), где основной критерий выбора - наименьшее время старта сервера.
В двухмашинной конфигурации использование Сonsensus Leasing проблематично и рекомендуется использование Database Leasing.
Пример:
При старте первого сервера он ищет остальных участников кластера, чтобы узнать есть ли мастер: Если нет мастера, то он становится мастером:
При старте второго сервера из кластера он ищет участников кластера, находит первый сервер, являющийся мастером: Далее оба сервера пересматривают вопрос по мастеру кластера: если время старта второго меньше, чем первого (который на данный момент является мастером), то мастером становится второй сервер: Аналогично с третьим и последующим серверами.