我們使用起搏器/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 也會在這裡拯救你。