Глава 3. RGManager

RGManager — менеджер кластерных ресурсов, отвечающий за настройку, управление и восстановление групп ресурсов, также называемых сервисами. Группа ресурсов представляет собой древовидную структуру, связи в которой построены по принципу семейных взаимосвязей.
RGManager включает собственные инструменты для конфигурации и мониторинга сервисов. Так, в случае отказа узла RGManager сможет перенести сервис на другой узел с минимальными помехами для рабочего процесса. Дополнительно можно определить подмножество узлов, на которых будет работать сервис, — например httpd привязать к одной группе узлов, а mysql — к другой.
В этой главе обсуждаются основные понятия и рабочие процессы RGManager:
  • Резервный домен — подмножество узлов, на которых может работать кластерный сервис.
  • Сервисная политика — правила запуска и восстановления сервисов.
  • Дерево ресурсов — иерархическая структура ресурсов, определяющая порядок их запуска и остановки.
  • Управление сервисами — управляющие команды, изменяющие состояние сервиса.
  • Управление виртуальными машинами — особенности управления виртуальными машинами в кластере.
  • Команды управления ресурсами — команды агентов, которые использует RGManager, и их настройка в cluster.conf.
  • Сценарии событий — если стандартные сервисные политики rgmanager вас не устраивают, их можно адаптировать при помощи сценариев.

3.1. Резервный домен

Резервный домен представляет собой подмножество узлов, на которых может работать кластерный сервис. Наличие резервных доменов не является обязательным условием для нормального функционирования кластера, но поможет создать гибкую конфигурацию.
Поведение домена определяется несколькими характеристиками:
  • Предпочтительный узел — узел, на котором сервис запускается в первую очередь. Выбор предпочтительного узла можно эмулировать, создав неупорядоченный, неограниченный домен с единственным элементом.
  • Ограниченный домен — сервис может работать только в пределах этого домена. Если в домене не осталось свободных узлов, сервис будет приостановлен. Такая организация может упростить конфигурацию сервисов, аналогичных httpd, который требует, чтобы все узлы, на которых он выполняется, были настроены одинаково. В этом случае его можно закрепить за доменом, содержащим узлы с идентичной конфигурацией.
  • Неограниченный домен (по умолчанию) — сервис может работать на любом узле кластера, но предпочтение будет отдаваться узлам в домене. Если сервис выполняется за пределами домена, и в это время в домене появился свободный узел, он будет перенесен на этот узел (это поведение можно отключить, установив флаг «nofailback»).
  • Упорядоченный домен — позволяет определить предпочтительный порядок выбора узлов. Это означает, что при активации узла A, имеющего более высокий приоритет по сравнению с узлом B, сервис, работающий на узле B, будет перенесен на узел A. Таким образом, сервис всегда будет работать на узле с наивысшим приоритетом.
  • Неупорядоченный домен (по умолчанию) — сервис может работать на любом узле в домене без каких-либо предпочтений.
  • С возвратом — возвращает сервис на исходный узел, где он работал до сбоя. Обычно используется в упорядоченном домене при частых сбоях узла и помогает сократить число переносов, восстанавливая сервис не на промежуточном, а сразу на исходном узле.
Флаги «ordering», «restriction», «nofailback» помогают создать гибкие комбинации для контроля поведения сервисов при любых обстоятельствах.

3.1.1. Примеры доменов

В качестве примера рассмотрим кластер из нескольких узлов: {A, B, C, D, E, F, G}.
Упорядоченный, ограниченный домен {A, B, C}
Флаг «nofailback» не установлен: изначально сервис S будет запущен на узле A, так как он имеет наивысший приоритет. Если же сервис выполняется на узле C, и в это время узел A снова стал доступен — он будет перенесен с C обратно на А. Если все три узла отключены, S не сможет продолжить работу.
Флаг «nofailback» установлен: если сервис выполняется на узле C, и в это время узел A становится доступен — сервис останется на C. Если же C выйдет из строя, сервис будет восстановлен на узле A. Если все три узла отключены, S не сможет продолжить работу.
Неупорядоченный, ограниченный домен {A, B, C}
Для работы сервиса, закрепленного за этим доменом, должен быть доступен хотя бы один узел (например, B). Подключение узлов A и С никак не повлияет на работу сервиса, и он продолжит работу на узле B.
Упорядоченный, неограниченный домен {A, B, C}
Флаг «nofailback» не установлен: изначально сервис S будет работать на узле А, так как он имеет наивысший приоритет. Если А недоступен, будет выбран узел B, и наконец — С. Если узел А снова станет доступен, сервис будет перенесен с С обратно на А. Если отключены все три узла, будет выбран любой другой узел за пределами домена.
Флаг «nofailback» установлен: S изначально будет работать на узле с наивысшим приоритетом. Если узел А недоступен, будет выбран узел B, и наконец — С. Если позднее узел A снова станет доступен, сервис не будет переноситься обратно и останется на узле С.
Неупорядоченный, неограниченный домен {A, B, C}
Такой домен определяет предпочтительный круг узлов для запуска сервиса. Все узлы в домене равноправны, поэтому сервис не будет возвращаться на узел, где он работал до сбоя.