Общие сведения

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 и другие.