HA에는 Pacemaker/corosync를 사용하고 있습니다. 여기에는 가상 IP와 소프트웨어가 모두 포함됩니다. 다른 날 우리는 실패했고 corosync는 IMHO가 절대 발생해서는 안 되는 두 노드 모두에서 시작된 IPAddress를 보여주었습니다. 노드의 서비스를 중단할 때마다 nodeB로 이동하기 전에 먼저 nodeA의 IP를 중지했습니다. 내 질문은 이것이 버그이거나 잘못된 구성입니까? 리소스가 둘 이상의 서버(예: httpd)에서 실행되기를 원할 수도 있다는 점은 이해합니다. 하지만 어떤 상황에서 동일한 LAN에 있는 둘 이상의 PC에서 동일한 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는 여기서도 당신을 구해줄 것입니다.