Мы используем pacemaker/corosync для HA. Это включает в себя как виртуальные IP-адреса, так и программное обеспечение. На днях у нас произошел сбой, и corosync показал, что IPAddress запущен на обоих узлах, чего, по моему скромному мнению, никогда не должно происходить. Каждый раз, когда я выводил узел из эксплуатации, он сначала останавливал IP на nodeA, прежде чем перешел на nodeB. У меня вопрос: это ошибка или плохая конфигурация? Я понимаю, что нам могут понадобиться ресурсы, работающие на нескольких серверах (например, httpd), но в какой ситуации вы захотите, чтобы один и тот же IP работал на нескольких ПК в одной локальной сети? Ниже приведена моя текущая рабочая конфигурация.
node 1: s1.site.example.org \
attributes standby=off
node 2: s2.site.example.org
primitive vendor_blfd systemd:vendor_blfd \
op monitor interval=10s \
meta target-role=Started
primitive vendor_sipd systemd:vendor_sipd \
op monitor interval=10s \
meta target-role=Started
primitive opensips systemd:opensips \
op monitor interval=10s \
meta target-role=Started
primitive public_222 IPaddr2 \
params ip=XX.XX.XX.222 cidr_netmask=27 \
op monitor interval=30s
primitive public_NYC_10 IPaddr2 \
params ip=XX.XX.XX.10 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_19 IPaddr2 \
params ip=XX.XX.XX.19 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_23 IPaddr2 \
params ip=XX.XX.XX.23 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_40 IPaddr2 \
params ip=XX.XX.XX.40 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_41 IPaddr2 \
params ip=XX.XX.XX.41 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_42 IPaddr2 \
params ip=XX.XX.XX.42 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_43 IPaddr2 \
params ip=XX.XX.XX.43 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_44 IPaddr2 \
params ip=XX.XX.XX.44 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_45 IPaddr2 \
params ip=XX.XX.XX.45 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_46 IPaddr2 \
params ip=XX.XX.XX.46 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_47 IPaddr2 \
params ip=XX.XX.XX.47 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_48 IPaddr2 \
params ip=XX.XX.XX.48 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_49 IPaddr2 \
params ip=XX.XX.XX.49 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_50 IPaddr2 \
params ip=XX.XX.XX.50 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_51 IPaddr2 \
params ip=XX.XX.XX.51 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_52 IPaddr2 \
params ip=XX.XX.XX.52 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_53 IPaddr2 \
params ip=XX.XX.XX.53 cidr_netmask=25 \
op monitor interval=10s
primitive public_NYC_54 IPaddr2 \
params ip=XX.XX.XX.54 cidr_netmask=25 \
op monitor interval=10s \
meta target-role=Started
primitive public_NYC_55 IPaddr2 \
params ip=XX.XX.XX.55 cidr_netmask=25 \
op monitor interval=10s
group vendor public_NYC_10 public_NYC_19 public_NYC_23 public_NYC_40 public_NYC_41 public_NYC_42 public_NYC_43 public_NYC_44 public_NYC_45 public_NYC_46 public_NYC_47 public_NYC_48 public_NYC_49 public_NYC_50 public_NYC_51 public_NYC_52 public_NYC_53 public_NYC_54 public_NYC_55 public_222 opensips vendor_sipd vendor_blfd \
meta target-role=Started
property cib-bootstrap-options: \
have-watchdog=false \
dc-version=1.1.23-1.el7_9.1-9acf116022 \
cluster-infrastructure=corosync \
cluster-name=vendor \
stonith-enabled=false \
no-quorum-policy=ignore \
last-lrm-refresh=1650666825
решение1
Без правильно настроенного и включенного STONITH ( stonith-enabled=false
) ничто не мешает разделению сети между узлами привести к запуску служб на обоих узлах.
После разрешения разделения сети Pacemaker должен начать процесс восстановления, остановив группу на обоих узлах и затем снова запустив ее на одном узле. Если во время этого процесса восстановления произойдет сбой операции остановки, восстановление зависнет. STONITH спасет вас и здесь.