Глава 40. Высокая доступность PVE
Функция высокой доступности (High Availability, HA) в PVE позволяет кластеру автоматически перемещать или мигрировать ВМ с отказавшего узла на работоспособный узел без вмешательства пользователя.
Ресурс HA может работать только на узлах, где доступны все его зависимости. По умолчанию HA Manager рассматривает все узлы кластера как подходящие для размещения ресурса. Чтобы сохранить такое поведение, виртуальная машина или контейнер должны:
использовать параметры конфигурации, совместимые со всеми узлами кластера;
использовать только общее хранилище, доступное с каждого узла кластера;
использовать сетевые интерфейсы, настроенные на всех узлах кластера;
использовать только устройства с пробросом (passthrough), доступные на всех узлах кластера.
Если какая-либо зависимость доступна только на части узлов кластера, необходимо ограничить размещение ресурса высокой доступности этим подмножеством узлов с помощью правила строгой привязки узлов (см.
Правила привязки к узлам (Node Affinity)). После этого HA Manager будет выполнять размещение, восстановление и миграцию ресурса только среди узлов, указанных в правиле.
HA в PVE управляет только узлами и виртуальными машинами внутри кластера PVE. Эта функциональность не заменяет избыточность на уровне хранилища. Общие хранилища сторонних производителей могут иметь собственную HA-систему. Таким образом, для построения реально отказоустойчивой среды необходимо настроить как HA в PVE, так и избыточность на уровне хранилища.
Вычислительные узлы PVE могут иметь собственные уровни аппаратной избыточности, например, RAID-массивы, резервные источники питания, объединённые сетевые интерфейсы. HA не дублирует эти механизмы, а дополняет их на уровне оркестрации ВМ, обеспечивая сохранение работоспособности сервисов при отказе узла.
40.1. Как работает высокая доступность в PVE
PVE предоставляет программный стек
ha-manager, который автоматически обнаруживает сбои и выполняет автоматический переход на резервный ресурс. Основной объект, управляемый
ha-manager, называется ресурсом (service). Ресурс однозначно идентифицируется идентификатором сервиса (SID), состоящим из типа ресурса и идентификатора, специфичного для данного типа:
Для обеспечения высокой доступности на каждом узле работают два демона:
pve-ha-lrm — локальный менеджер ресурсов (Local Resource Manager, LRM). Он управляет службами, работающими на локальном узле. LRM считывает требуемые состояния служб из текущего статусного файла менеджера и выполняет соответствующие команды;
pve-ha-crm — кластерный менеджер ресурсов (Cluster Resource Manager, CRM). Он принимает решения на уровне кластера: отправляет команды LRM, обрабатывает результаты и переносит ресурсы на другие узлы при сбоях. CRM также выполняет fencing узлов.
При недоступности узла (например, сетевой разрыв или зависание) HA-менеджер:
Ожидает 60 секунд, чтобы исключить временные сбои.
Выполняет ограждение (fencing) отказавшего узла — блокирует узел, чтобы предотвратить одновременную работу ВМ на нескольких узлах («split-brain»).
Перемещает ВМ и контейнеры на другой доступный узел в группе HA.
Даже если узел продолжает работать, но потерял связь с кластером, HA считает его отказавшим и мигрирует ресурсы.
После восстановления узла HA не возвращает ВМ на исходный узел автоматически. Это должно выполняться вручную:
Отключить HA для нужной ВМ.
Переместить ВМ на исходный узел.
Включить HA для этой ВМ.
ВМ может быть перемещена вручную только если HA отключён для данной ВМ.