Глава 40. Высокая доступность PVE
Функция высокой доступности (High Availability, HA) в PVE позволяет кластеру автоматически перемещать или мигрировать ВМ с отказавшего узла на работоспособный узел без вмешательства пользователя.
Для корректной работы HA все ВМ и контейнеры должны использовать общее хранилище, доступное всем узлам кластера.
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 отключён для данной ВМ.