Общие сведения
Pacemaker и Corosync являются компонентами отказоустойчивой кластерной среды с открытым исходным кодом, предназначенной для обеспечения высокой доступности сервисов.
Pacemaker представляет собой менеджер ресурсов кластера (Cluster Resource Manager, CRM), отвечающий за управление состоянием ресурсов в кластере и их автоматическое переключение при отказах. Corosync обеспечивает кластерное членство и обмен сообщениями между узлами, выступая в роли коммуникационного уровня.
Кластерная архитектура Pacemaker и Corosync условно делится на три уровня:
- CIB (Cluster Information Base) — уровень, независимый от кластера. Содержит конфигурацию ресурсов и агентов управления. CIB представляет собой XML-базу, реплицируемую между всеми узлами кластера. Управление осуществляется с любого узла;
- Cluster Resource Manager (CRMd) — уровень управления ресурсами, реализуемый демоном pacemaker. Отвечает за реакцию на события, происходящие в кластере (отказы, переключения узлов, действия администратора), расчет оптимального состояния и реализацию необходимых операций;
- PEngine (Policy Engine) — информационный уровень. Обеспечивает сетевое взаимодействие, обработку кворума, распределение команд управления и реализацию политик работы кластера. Этот уровень опирается на Corosync.
Ключевые компоненты кластера:
- DC (Designated Coordinator) — основной управляющий узел, выбранный путём голосования. При его недоступности выполняется автоматическая переизбрание;
- LRMd (Local Resource Manager daemon) — демон управления локальными ресурсами. Отвечает за исполнение команд через RA (Resource Agent) — скрипты, управляющие жизненным циклом ресурса;
- STONITHd (Shoot The Other Node In The Head) — компонент защиты от порчи данных. Обеспечивает физическое отключение узла в случае критического сбоя, в том числе через IPMI, BMC или внешние устройства.
С точки зрения Pacemaker ресурсом считается любой объект, управляемый через скрипты: от IP-адреса и службы Apache до систем с репликацией и режимами master/slave. Управление ресурсами должно осуществляться исключительно через кластер, исключая ручной запуск или автоматический запуск при загрузке ОС.
Типы ресурсов
В Pacemaker реализованы следующие типы ресурсов:
- Primitive — базовый тип, представляющий собой один экземпляр ресурса;
- Clone — ресурс, который может быть запущен на нескольких узлах. Делится на типы: Anonymous, Globally Unique и Stateful;
- Multi-state — расширение Clone-ресурса с поддержкой состояний Master и Slave. Применяется, например, для DRBD.
Дополнительно ресурсы могут объединяться в Group, которая обеспечивает запуск на одном узле в заданном порядке.
Поддерживаются механизмы:
- Migration — "живой" перенос ресурса между узлами (при поддержке агентом операций migrate_to и migrate_from);
- Colocation — указание на необходимость совместного или раздельного размещения ресурсов;
- Ordering — определение порядка запуска и остановки ресурсов;
- Location — указание предпочтений по размещению ресурсов на узлах.
Политики управления
Pacemaker позволяет управлять поведением ресурсов при отказах и восстановлении узлов с помощью параметров:
- resource-stickiness — желательность оставаться на текущем узле;
- migration-threshold — количество отказов, после которых ресурс перемещается;
- failure-timeout — интервал, после которого считается, что сбой более неактуален;
- multiple-active — поведение при запуске ресурса на нескольких узлах;
- monitor — периодическая проверка состояния ресурса (указывается через параметр interval).
Уровень кворума определяет возможность функционирования кластера. По умолчанию кластер считается работоспособным при наличии более 50% работоспособных узлов. Поведение при потере кворума задаётся параметром no-quorum-policy.
Pacemaker поддерживает разнообразные схемы отказоустойчивости: Active/Passive, Active/Active, N+1, N-to-1 и другие.