Archived
fix(ha/cluster-init): use crm configure instead of cibadmin XML for resources
cibadmin raw XML fails schema validation under pacemaker-4.0: globally-unique is not a valid direct <clone> attribute, and master-max/master-node-max are renamed. Switch to crm configure commands which are schema-version-aware: - promotable clone with promoted-max/promoted-node-max - order/colocation constraints using Promoted role (Pacemaker 4.0 naming) - crm configure handles schema differences automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HaH1cSGvhogRP5ExoF6nD8
This commit is contained in:
+47
-77
@@ -224,84 +224,54 @@ log "Configuring Pacemaker cluster properties..."
|
||||
crm_attribute -t crm_config -n stonith-enabled -v false
|
||||
crm_attribute -t crm_config -n no-quorum-policy -v ignore
|
||||
|
||||
log "Creating DRBD promotable clone resource..."
|
||||
cibadmin --replace --scope resources --xml-text "
|
||||
<resources>
|
||||
<clone id=\"ms-drbd0\" globally-unique=\"false\">
|
||||
<meta_attributes id=\"ms-drbd0-meta\">
|
||||
<nvpair id=\"ms-drbd0-promotable\" name=\"promotable\" value=\"true\"/>
|
||||
<nvpair id=\"ms-drbd0-master-max\" name=\"master-max\" value=\"1\"/>
|
||||
<nvpair id=\"ms-drbd0-master-node-max\" name=\"master-node-max\" value=\"1\"/>
|
||||
<nvpair id=\"ms-drbd0-clone-max\" name=\"clone-max\" value=\"2\"/>
|
||||
<nvpair id=\"ms-drbd0-clone-node-max\" name=\"clone-node-max\" value=\"1\"/>
|
||||
<nvpair id=\"ms-drbd0-notify\" name=\"notify\" value=\"true\"/>
|
||||
<nvpair id=\"ms-drbd0-interleave\" name=\"interleave\" value=\"true\"/>
|
||||
</meta_attributes>
|
||||
<primitive id=\"drbd0\" class=\"ocf\" type=\"drbd\" provider=\"linbit\">
|
||||
<instance_attributes id=\"drbd0-attrs\">
|
||||
<nvpair id=\"drbd0-resource\" name=\"drbd_resource\" value=\"ha-data\"/>
|
||||
</instance_attributes>
|
||||
<operations>
|
||||
<op id=\"drbd0-start\" name=\"start\" interval=\"0\" timeout=\"240s\"/>
|
||||
<op id=\"drbd0-stop\" name=\"stop\" interval=\"0\" timeout=\"120s\"/>
|
||||
<op id=\"drbd0-promote\" name=\"promote\" interval=\"0\" timeout=\"90s\"/>
|
||||
<op id=\"drbd0-demote\" name=\"demote\" interval=\"0\" timeout=\"90s\"/>
|
||||
<op id=\"drbd0-monitor-master\" name=\"monitor\" interval=\"20s\" timeout=\"20s\" role=\"Promoted\"/>
|
||||
<op id=\"drbd0-monitor-slave\" name=\"monitor\" interval=\"30s\" timeout=\"20s\" role=\"Unpromoted\"/>
|
||||
</operations>
|
||||
</primitive>
|
||||
</clone>
|
||||
<group id=\"ha-group\">
|
||||
<primitive id=\"xfs-data\" class=\"ocf\" type=\"Filesystem\" provider=\"heartbeat\">
|
||||
<instance_attributes id=\"xfs-data-attrs\">
|
||||
<nvpair id=\"xfs-data-device\" name=\"device\" value=\"${DRBD_DEVICE}\"/>
|
||||
<nvpair id=\"xfs-data-directory\" name=\"directory\" value=\"${XFS_MOUNT}\"/>
|
||||
<nvpair id=\"xfs-data-fstype\" name=\"fstype\" value=\"xfs\"/>
|
||||
<nvpair id=\"xfs-data-options\" name=\"options\" value=\"defaults\"/>
|
||||
<nvpair id=\"xfs-data-force_unmount\" name=\"force_unmount\" value=\"false\"/>
|
||||
</instance_attributes>
|
||||
<operations>
|
||||
<op id=\"xfs-data-start\" name=\"start\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"xfs-data-stop\" name=\"stop\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"xfs-data-monitor\" name=\"monitor\" interval=\"20s\" timeout=\"40s\"/>
|
||||
</operations>
|
||||
</primitive>
|
||||
<primitive id=\"iscsi-target\" class=\"systemd\" type=\"targetctl\">
|
||||
<operations>
|
||||
<op id=\"iscsi-start\" name=\"start\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"iscsi-stop\" name=\"stop\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"iscsi-monitor\" name=\"monitor\" interval=\"20s\" timeout=\"40s\"/>
|
||||
</operations>
|
||||
</primitive>
|
||||
<primitive id=\"nfs-server\" class=\"systemd\" type=\"nfs-server\">
|
||||
<operations>
|
||||
<op id=\"nfs-start\" name=\"start\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"nfs-stop\" name=\"stop\" interval=\"0\" timeout=\"60s\"/>
|
||||
<op id=\"nfs-monitor\" name=\"monitor\" interval=\"30s\" timeout=\"40s\"/>
|
||||
</operations>
|
||||
</primitive>
|
||||
<primitive id=\"vip\" class=\"ocf\" type=\"IPaddr2\" provider=\"heartbeat\">
|
||||
<instance_attributes id=\"vip-attrs\">
|
||||
<nvpair id=\"vip-ip\" name=\"ip\" value=\"${VIP}\"/>
|
||||
<nvpair id=\"vip-cidr\" name=\"cidr_netmask\" value=\"24\"/>
|
||||
</instance_attributes>
|
||||
<operations>
|
||||
<op id=\"vip-start\" name=\"start\" interval=\"0\" timeout=\"20s\"/>
|
||||
<op id=\"vip-stop\" name=\"stop\" interval=\"0\" timeout=\"20s\"/>
|
||||
<op id=\"vip-monitor\" name=\"monitor\" interval=\"10s\" timeout=\"20s\"/>
|
||||
</operations>
|
||||
</primitive>
|
||||
</group>
|
||||
</resources>
|
||||
"
|
||||
log "Creating Pacemaker resources via crm configure..."
|
||||
# Use crm configure (schema-aware) instead of raw cibadmin XML to avoid
|
||||
# pacemaker-4.0 schema incompatibilities with direct clone attributes.
|
||||
# --force skips the interactive prompt; crm configure exits 0 on success.
|
||||
crm configure <<'CRM_EOF'
|
||||
primitive drbd0 ocf:linbit:drbd \
|
||||
params drbd_resource=ha-data \
|
||||
op start timeout=240s interval=0 \
|
||||
op stop timeout=120s interval=0 \
|
||||
op promote timeout=90s interval=0 \
|
||||
op demote timeout=90s interval=0 \
|
||||
op monitor interval=20s timeout=20s role=Promoted \
|
||||
op monitor interval=30s timeout=20s role=Unpromoted
|
||||
|
||||
log "Adding ordering and colocation constraints..."
|
||||
cibadmin --replace --scope constraints --xml-text "
|
||||
<constraints>
|
||||
<rsc_order id=\"order-drbd-group\" first=\"ms-drbd0\" first-action=\"promote\" then=\"ha-group\" then-action=\"start\"/>
|
||||
<rsc_colocation id=\"coloc-group-with-drbd\" rsc=\"ha-group\" with-rsc=\"ms-drbd0\" with-rsc-role=\"Master\" score=\"INFINITY\"/>
|
||||
</constraints>
|
||||
"
|
||||
clone ms-drbd0 drbd0 \
|
||||
meta promotable=true promoted-max=1 promoted-node-max=1 \
|
||||
clone-max=2 clone-node-max=1 \
|
||||
notify=true interleave=true globally-unique=false
|
||||
|
||||
primitive xfs-data ocf:heartbeat:Filesystem \
|
||||
params device=/dev/drbd0 directory=/srv/ha-data fstype=xfs options=defaults \
|
||||
force_unmount=false \
|
||||
op start timeout=60s interval=0 \
|
||||
op stop timeout=60s interval=0 \
|
||||
op monitor interval=20s timeout=40s
|
||||
|
||||
primitive iscsi-target systemd:targetctl \
|
||||
op start timeout=60s interval=0 \
|
||||
op stop timeout=60s interval=0 \
|
||||
op monitor interval=20s timeout=40s
|
||||
|
||||
primitive nfs-server systemd:nfs-server \
|
||||
op start timeout=60s interval=0 \
|
||||
op stop timeout=60s interval=0 \
|
||||
op monitor interval=30s timeout=40s
|
||||
|
||||
primitive vip ocf:heartbeat:IPaddr2 \
|
||||
params ip=192.168.2.229 cidr_netmask=24 \
|
||||
op start timeout=20s interval=0 \
|
||||
op stop timeout=20s interval=0 \
|
||||
op monitor interval=10s timeout=20s
|
||||
|
||||
group ha-group xfs-data iscsi-target nfs-server vip
|
||||
|
||||
order order-drbd-group Mandatory: ms-drbd0:promote ha-group:start
|
||||
colocation coloc-group-with-drbd INFINITY: ha-group ms-drbd0:Promoted
|
||||
commit
|
||||
CRM_EOF
|
||||
|
||||
log "Waiting for resources to start..."
|
||||
for i in $(seq 1 60); do
|
||||
|
||||
Reference in New Issue
Block a user