我们正在使用 pacemaker/corosync 实现 HA。这包括虚拟 IP 和软件。前几天我们遇到了故障,corosync 显示 IPAddress 在两个节点上都已启动,在我看来,这种情况绝不应该发生。每次我将一个节点停止服务时,它都会先停止节点 A 上的 IP,然后再转到节点 B。我的问题是,这是一个错误还是配置错误?我理解我们可能希望资源在多个服务器上运行(例如 httpd),但在什么情况下您希望同一个 IP 在同一 LAN 上的多台 PC 上运行?以下是我当前正在运行的配置。
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 也会在这里拯救你。