Смена состояния кластеров | Clusters_Federation
Руководство администратора Смена состояния кластеров

Смена состояния кластеров

TCF в типичной конфигурации содержит два идентичных кластера Tarantool:

  • активный кластер, который принимает запросы от приложения;

  • пассивный кластер, который содержит копию данных активного кластера. Трафик от приложения не направляется на роутеры пассивного кластера.

Состояния кластеров активный-пассивный позволяют управлять переключением трафика между ними. При переключении трафика с одного кластера на другой состояния кластеров меняются на противоположные. Так, активный кластер становится пассивным, а пассивный – активным. Определить текущее состояние кластера можно с помощью соответствующего HTTP-запроса или в веб-интерфейсе кластера.

TCF поддерживает два способа переключения состояния кластеров:

Ручная смена состояния

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

  • через HTTP API с помощью запроса toggle;

  • соответствующей кнопкой в веб-интерфейсе TCM или Cartridge.

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

HTTP-запрос

Чтобы получить текущий статус кластера, выполните GET-запрос на адрес обработчика запроса вида /tcf/status. Запрос может быть отправлен на любой экземпляр выбранного кластера (активного или пассивного).

Пример запроса:

$ curl -X GET --location "http://192.168.64.9:8080/tcf/status"   
active

Чтобы поменять состояния кластеров на противоположные, отправьте POST-запрос на адрес обработчика запроса вида /tcf/toggle. Запрос может быть отправлен на любой экземпляр выбранного кластера (активного или пассивного).

Пример запроса:

$ curl -X POST --location "http://192.168.64.9:8080/tcf/toggle"

Веб-интерфейс

Просмотреть и изменить состояния кластеров можно через веб-интерфейс:

  • для кластеров на основе Tarantool 2.x используется веб-интерфейс Cartridge;

  • для кластеров на основе Tarantool 3.x используется веб-интерфейс Tarantool Cluster Manager (TCM).

Чтобы переключить статусы кластеров в TCM, перейдите на вкладку Cluster > TCF и нажмите кнопку Toggle.

Страница TCF в веб-интерфейсе TCM

Чтобы переключить статусы кластеров в веб-интерфейсе Cartridge, перейдите на вкладку TCF и нажмите кнопку Toggle cluster states:

Страница TCF в веб-интерфейсе Cartridge

Автоматическая смена состояния

Если на активном кластере возникают неполадки, состояние кластеров переключается автоматически. За автоматическую смену состояния отвечает отдельная роль в каждом кластере – TCF-координатор (roles.tcf-coordinator). Чтобы обеспечить отказоустойчивость, в каждом кластере должно быть запущено два и более экземпляра Tarantool с этой ролью.

Требования к активному кластеру

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

  • в кластере здоров хотя бы один роутер, и этот роутер является мастером своего набора реплик;

  • у каждого набора реплик хранилищ есть работоспособный мастер-узел.

В кластерах Tarantool 3.x экземпляр считается работоспособным, если он отвечает на запрос координатора box.info и имеет статус конфигурации ready.

В кластерах Tarantool 2.x на основе Cartridge узел является работоспособным, если он имеет кластерный статус RolesConfigured и не отключен (disabled) в топологии кластера. Роутер считается здоровым, если в сети membership он имеет статус alive, а экземпляр хранилища – если в этой сети он имеет статус alive или suspect.

Проверка работоспособности кластера

Каждый экземпляр с ролью TCF-координатора регулярно проверяет работоспособность кластера. Проверка происходит раз в заданное количество секунд. Периодичность опроса определяется в опции конфигурации health_check_delay, значение этой опции по умолчанию равно 3 секундам. Если координатор несколько раз подряд получает от узла ответ “нездоров” (по умолчанию – 3 раза), координатор определяет этот узел как неработоспособный. Задать максимальное количество таких ответов можно в опции max_suspect_counts.

Параметры конфигурации TCF-координатора описаны в следующих разделах справочника:

Механизм работы координаторов TCF

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

Если ведущий координатор активного кластера считает кластер неработоспособным, он запускает смену состояния этого кластера с активного на пассивное. Ведущий координатор пассивного кластера при этом запускает переключение состояния своего кластера из пассивного в активное, если выполнены такие условия:

  • ведущий координатор пассивного кластера не получает из хранилища состояния информацию, что активный кластер здоров, в течение определенного времени. Время ожидания ответа в секундах задает опция failover_timeout, значение по умолчанию составляет 20 секунд;

  • этот координатор определяет свое состояние как работоспособное.

Подобный сценарий возможен как в ситуации, когда все координаторы активного кластера считают кластер неработоспособным, так и в случае потери соединения активного кластера с хранилищем состояния.

Found what you were looking for?
Feedback