Pacemaker - Ресурс перемещения ограничения размещения

Я столкнулся с проблемой с ограничениями колокации .

Я создал кластер из 4 узлов (3 «основных» и 1 «резервный») с 3 ресурсами, каждый ресурс должен работать только на своем собственном узле или на резервном и никогда вместе на резервном.

Когда ресурсы создаются с соответствующими приоритетами, которые они действительно выполняют на каждом «главном» узле, как и ожидалось.

Если я добавлю одно ограничение размещения (ресурс 3 не может работать с ресурсом 2), ресурсы останутся правильно на своем узле.

Но как только я добавляю второе ограничение размещения (ресурс2 не может работать с ресурсом1), ресурс1 переключается на запасной узел, и я не могу понять почему.

Может кто-нибудь объяснить такое поведение?

Настройка ресурса:

pcs property set symmetric-cluster=false

pcs resource create TestResourceNode1 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode1 prefers node1=100
pcs constraint location TestResourceNode1 prefers nodespare=80

pcs resource create TestResourceNode2 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode2 prefers node2=50
pcs constraint location TestResourceNode2 prefers nodespare=30

pcs resource create TestResourceNode3 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode3 prefers node3=10
pcs constraint location TestResourceNode3 prefers nodespare=1

Настройка ограничений:

pcs constraint colocation add TestResourceNode3 with TestResourceNode2 score=-INFINITY
# OK, resources are still running on node1, node2, node3
pcs constraint colocation add TestResourceNode2 with TestResourceNode1 score=-INFINITY
# KO, resource TestResourceNode1 has moved to nodespare, why ???
0
задан 26 March 2019 в 11:18
2 ответа

Если вы посмотрите на вывод crm_mon , вы заметите, что один узел работает как DC кластера. . Это узел, на котором в настоящее время работает механизм политик Pacemaker ( pengine ). Вы должны видеть сообщения в журналах ( / var / log / messages или / var / log / syslog ) во время перемещения ресурса, которые выглядят что-то вроде этого:

pengine[6132]:   notice: process_pe_message: Calculated Transition 7: /var/lib/pacemaker/pengine/pe-input-4424.bz2

Вы можете проверить эти входные файлы механизма политик, чтобы увидеть, «что думал кластер», когда он выполнял эти действия, используя утилиту crm_simulate . Скорее всего, это как-то связано с оценками ресурсов , поэтому я бы начал с их проверки:

$ crm_simulate -s -x /var/lib/pacemaker/pengine/pe-input-4424.bz2

А затем осмотрел окружающие файлы pe-input , чтобы понять изменения в вашем ресурсе оценки предпочтений и ограничения на механизм политики.

Отладка механизма политик Pacemaker может быть сложной задачей. Я бы порекомендовал настроить / протестировать оценки предпочтений, прежде чем вы будете тратить слишком много времени на crm_simulate . Может быть, более «тяжелые» оценки ресурсов, вроде этой, просто работают:

pcs resource create TestResourceNode1 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode1 prefers node1=10000
pcs constraint location TestResourceNode1 prefers nodespare=800

pcs resource create TestResourceNode2 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode2 prefers node2=5000
pcs constraint location TestResourceNode2 prefers nodespare=300

pcs resource create TestResourceNode3 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode3 prefers node3=1000
pcs constraint location TestResourceNode3 prefers nodespare=10

Надеюсь, это поможет!

0
ответ дан 5 December 2019 в 03:38

Всем, кто ищет решение подобной проблемы.

Ограничения транзитивного размещения для ресурсов с оценками -INF (пример: r1 с r2 -INF и r2 с r3 -INF) приводят к недопустимому размещению. См. https://bugs.clusterlabs.org/show_bug.cgi?id=5320 .

Одним из способов решения проблемы является назначение ограничений использования ресурсов, чтобы ограничить их одновременное размещение на одном узле.

Пример конфигурации:

# Opt-in cluster, ressources will not run anywhere by default
pcs property set symmetric-cluster=false
# Set placement strategy to utilization
pcs property set placement-strategy=utilization

pcs resource create TestResourceNode1 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode1 prefers node1=100
pcs constraint location TestResourceNode1 prefers nodespare=80
crm_resource --meta --resource TestResourceNode1 --set-parameter priority --parameter-value 100

pcs resource create TestResourceNode2 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode2 prefers node2=50
pcs constraint location TestResourceNode2 prefers nodespare=30
crm_resource --meta --resource TestResourceNode2 --set-parameter priority --parameter-value 50

pcs resource create TestResourceNode3 ocf:pacemaker:Dummy op monitor interval=120s
pcs constraint location TestResourceNode3 prefers node3=10
pcs constraint location TestResourceNode3 prefers nodespare=3
crm_resource --meta --resource TestResourceNode3 --set-parameter priority --parameter-value 10

pcs node utilization node1 cpu=1 memory=1000
pcs node utilization node2 cpu=1 memory=1000
pcs node utilization node3 cpu=1 memory=1000
pcs node utilization nodespare cpu=1 memory=1000

pcs resource utilization TestResourceNode1 cpu=1 memory=1000
pcs resource utilization TestResourceNode2 cpu=1 memory=1000
pcs resource utilization TestResourceNode3 cpu=1 memory=1000
0
ответ дан 5 December 2019 в 03:38

Теги

Похожие вопросы