Product SiteDocumentation Site

40.3.2. Правила

Правила HA (Affinity Rules) позволяют ограничивать, на каких узлах могут работать ресурсы.
Правила HA (Affinity Rules)
Конфигурация правил хранится в файле /etc/pve/ha/rules.cfg. Формат файла:
<тип>: <правило>
resources <список_ресурсов>
<свойство> <значение>

Таблица 40.2. Дополнительные свойства

Свойство
Описание
comment: <строка>
Описание правила высокой доступности (HA)
disable: <логическое значение>
Отключено ли правило высокой доступности (HA)
resources: <тип>:<имя>{,<тип>:<имя>}*
Список идентификаторов ресурсов высокой доступности (HA)

Таблица 40.3. Типы правил высокой доступности (HA)

Тип правила HA
Описание
node-affinity
Привязка ресурсов к определённым узлам
resource-affinity
Устанавливает соответствие между двумя или более ресурсами: positive — ресурсы должны размещаться на одном узле, negative — ресурсы должны размещаться на разных узлах

40.3.2.1. Правила привязки к узлам (Node Affinity)

По умолчанию ресурс может работать на любом узле кластера. Правила привязки к узлам позволяют ограничить выбор.
По умолчанию правила привязки к узлам нестрогие — если указанные узлы недоступны, ресурс запускается на любом другом. Если правило строгое (strict = 1) — если ни один указанный узел не доступен, ресурс останавливается.
Для добавления правила привязки к узлам необходимо на вкладке Центр обработки данныхHAAffinity Rules в разделе HA Node Affinity Rules нажать кнопку Добавить.
Добавление правила привязки к узлам
Настройки правила:
  • Включить — активировать или отключить правило;
  • HA Resources — список ресурсов, на которые будет действовать правило;
  • Strict — строгость привязки;
  • Узел — выбор целевых узлов (нужно выбрать, по крайней мере, один узел);
  • Приоритет — назначение приоритета узлу. Ресурс будет работать на доступных узлах с наивысшим приоритетом. Если в классе наивысшего приоритета есть несколько узлов, сервисы будут распределены по этим узлам. Приоритеты имеют относительное значение. Чем больше число, тем выше приоритет.
Для больших кластеров или особых случаев использования имеет смысл определить более детальное поведение при отказе. Например, ресурсы vm:200 и ct:300 должны работать на узле pve01. Если узел pve01 становится недоступен, ресурсы следует распределить между узлами pve02 и pve03. Если узлы pve02 и pve03 также недоступны, ресурсы должны работать на узле pve04. Чтобы реализовать это поведение в правиле соответствия узлов, узлы можно связать по приоритетам, чтобы упорядочить предпочтение узлов. Если два или более узлов имеют одинаковый приоритет, ресурсы могут работать на любом из них.
Пример команд для работы с правилами привязки к узлам:
  • Привязка vm:102 к pve01:
    # ha-manager rules add node-affinity ha-rule-vm102 --resources vm:102 --nodes pve01
    
  • Сделать правило строгим:
    # ha-manager rules set node-affinity ha-rule-vm102 --strict 1
    
  • Cоздание правила с указанием приоритетов:
    # ha-manager rules add node-affinity priority-cascade \
      --resources vm:200,ct:109 --nodes "pve01:2,pve02:1,pve03:1,pve04"
    
    В данном примере узел pve01 получает наивысший приоритет, узлы pve02 и pve03 — одинаковый, и, наконец, узел pve04 получает самый низкий приоритет, который можно не указывать (будет установлено значение по умолчанию равное 0).
Пример конфигурации правил привязки к узлам (/etc/pve/ha/rules.cfg):
node-affinity: ha-rule-vm102
        nodes pve01
        resources vm:102
        strict 1

node-affinity: priority-cascade
        nodes pve01:2,pve02:1,pve03
        resources ct:109

Таблица 40.4. Свойства правила привязки к узлам

Свойство
Описание
nodes: <узел>[:<приоритет>]{,<узел>[:<приоритет>]}*
Список узлов кластера, каждому из которых может быть назначен приоритет
resources: <тип>: <имя>{,<тип>: <имя>}*
Список идентификаторов ресурсов HA
strict: <логическое значение> (по умолчанию = 0)
Описывает, является ли правило привязки к узлам строгим или нестрогим

40.3.2.2. Правила привязки ресурсов (Resource Affinity)

Правила привязки ресурсов позволяют задавать, должны ли два или более ресурса высокой доступности (HA) размещаться на одном узле или, наоборот, на разных узлах. Такие ограничения также называют правилами привязки/антипривязки.
Например, если между ресурсами vm:104 (веб-сервер) и vm:108 (база данных) интенсивный обмен данными, их размещение на разных узлах может привести к увеличению сетевых задержек и избыточной нагрузке на сеть. В этом случае правило с положительной привязкой (positive affinity) гарантирует, что оба ресурса будут работать на одном узле.
Однако не всегда целесообразно размещать ресурсы вместе. Например, если vm:120 и ct:130 — ресурсоёмкие экземпляры баз данных, их совместное размещение может привести к перегрузке узла и снижению производительности. В этом случае правило с отрицательной привязкой (negative affinity) гарантирует, что оба ресурса никогда не будут работать на одном узле.

Важно

В отличие от правил привязки к узлам, правила привязки ресурсов по умолчанию строгие. Если ограничение невозможно выполнить (например, не хватает узлов для разделения), диспетчер HA переведёт ресурс в состояние ошибки или остановит его.
Для добавления правила привязки ресурсов необходимо на вкладке Центр обработки данныхHAAffinity Rules в разделе HA Resource Affinity Rules нажать кнопку Добавить.
Добавление правила привязки ресурсов
Настройка правила:
  • Включить — активировать или отключить правило;
  • HA Resources — ресурсы, к которым применяется правило;
  • Affinity — тип привязки:
    • Keep Together — ресурсы должны находиться на одном узле;
      Keep Separate — ресурсы должны быть разнесены по разным узлам.
Примеры создания правила привязки ресурсов в командной строке:
# ha-manager rules add resource-affinity keep-together \
  --affinity positive --resources vm:104,ct:108

# ha-manager rules add resource-affinity keep-separate \
--affinity negative --resources vm:200,ct:300
Первое правило гарантирует размещение ресурсов на одном узле, второе — на разных.

Примечание

Если несколько положительных правил содержат общие ресурсы, они объединяются в одно логическое правило. Например, правила для пар (vm:100, vm:101) и (vm:101, vm:102) эквивалентны одному правилу для (vm:100, vm:101, vm:102).

Примечание

При активации правила positive affinity, если ресурсы уже запущены на разных узлах, диспетчер HA переместит их на узел, где запущено большинство из них. При равенстве выбирается узел с алфавитно-наименьшим именем.
Пример конфигурации правил привязки ресурсов (/etc/pve/ha/rules.cfg):
resource-affinity: ha-rule-734d043c-c23a
        affinity positive
        resources ct:108,vm:104

Таблица 40.5. Свойства правила привязки ресурсов

Свойство
Описание
affinity: <negative | positive>
Описывает, должны ли ресурсы храниться на одном узле (positive) или на разных узлах (negative)
resources: <тип>: <имя>{,<тип>: <имя>}*
Список идентификаторов ресурсов HA
Логика наследования и конфликтов
Если ресурсы A, B и C связаны правилом positive affinity, а A также участвует в negative affinity с ресурсом D, то B и C автоматически наследуют антипривязку к D.
Конфликт возникает, если один и тот же набор ресурсов одновременно входит в positive и negative правила. В этом случае правило отключается, так как требование «быть вместе и отдельно» невыполнимо.
Взаимодействие с правилами привязки к узлам
Если ресурсы vm:100, vm:101, vm:102 находятся в одном positive-правиле, а vm:102 привязан к узлу pve03, то все три ресурса будут ограничены узлом pve03.
Однако нельзя задать для одного ресурса несколько разных правил привязки к узлам — это вызовет ошибку, и правило будет отключено.

40.3.2.3. Конфликты правил и ошибки

Перед применением все правила HA проверяются на выполнимость. Невыполнимые правила отключаются до устранения конфликтов.
Критерии проверки:
  • Ресурс HA может входить только в одно правило привязки к узлам.
  • Правило привязки ресурсов должно содержать минимум два ресурса.
  • Negative affinity не может включать больше ресурсов, чем количество узлов в кластере (иначе не удастся разнести их по разным узлам).
  • Один и тот же набор ресурсов не может одновременно входить в positive и negative правила.
  • Ресурс может участвовать одновременно в правилах привязки к узлам и к ресурсам, только если правило к узлам использует один приоритетный класс.
  • Ресурсы с positive affinity могут входить максимум в одно правило привязки к узлам.
  • Для ресурсов с negative affinity количество доступных узлов должно быть не меньше, чем число ресурсов в правиле.