我使用 DRBD 和一些基於網路的主/從資源實現了一個簡單的雙節點叢集。
使用 ethmonitor RA,每當主節點/主節點在指定乙太網路實體設備上失去連結時,我都會透過將主節點角色限制在 ethmon 變數為「1」的節點上來設定故障轉移。
但是,我的主機託管約束出了問題- 如果我設置DRBDFS 資源來監視eth1 上的鏈接,則拔出主節點上的eth1 會導致按預期進行故障轉移- 所有主資源都會降級為“從屬”並在相反的位置提升節點,「正常」DRBDFS 按預期移動到另一個節點。
但是,如果我對基於網路的主/從資源設定相同的 ethmonitor 約束,則只有該特定資源會進行故障轉移 - DRBDFS 與其他主/從資源一樣保留在同一位置(儘管它停止)。
這氣味就像對我來說是一個約束問題 - 有誰知道我可能做錯了什麼?
之前的PC:
Cluster name: node1.hostname.com_node2.hostname.com
Stack: corosync
Current DC: node2.hostname.com_0 (version 1.1.16-12.el7_4.4-94ff4df) - partition with quorum
Last updated: Tue Mar 20 16:25:47 2018
Last change: Tue Mar 20 16:00:33 2018 by hacluster via crmd on node2.hostname.com_0
2 nodes configured
11 resources configured
Online: [ node1.hostname.com_0 node2.hostname.com_0 ]
Full list of resources:
Master/Slave Set: drbd.master [drbd.slave]
Masters: [ node1.hostname.com_0 ]
Slaves: [ node2.hostname.com_0 ]
drbdfs (ocf::heartbeat:Filesystem): Started node1.hostname.com_0
Master/Slave Set: inside-interface-sameip.master [inside-interface-sameip.slave]
Masters: [ node1.hostname.com_0 ]
Slaves: [ node2.hostname.com_0 ]
Master/Slave Set: outside-interface-sameip.master [outside-interface-sameip.slave]
Masters: [ node1.hostname.com_0 ]
Slaves: [ node2.hostname.com_0 ]
Clone Set: monitor-eth1-clone [monitor-eth1]
Started: [ node1.hostname.com_0 node2.hostname.com_0 ]
Clone Set: monitor-eth2-clone [monitor-eth2]
Started: [ node1.hostname.com_0 node2.hostname.com_0 ]
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: inactive/disabled
PCS 之後:
Cluster name: node1.hostname.com_node2.hostname.com
Stack: corosync
Current DC: node2.hostname.com_0 (version 1.1.16-12.el7_4.4-94ff4df) - partition with quorum
Last updated: Tue Mar 20 16:29:40 2018
Last change: Tue Mar 20 16:00:33 2018 by hacluster via crmd on node2.hostname.com_0
2 nodes configured
11 resources configured
Online: [ node1.hostname.com_0 node2.hostname.com_0 ]
Full list of resources:
Master/Slave Set: drbd.master [drbd.slave]
Masters: [ node1.hostname.com_0 ]
Slaves: [ node2.hostname.com_0 ]
drbdfs (ocf::heartbeat:Filesystem): Stopped
Master/Slave Set: inside-interface-sameip.master [inside-interface-sameip.slave]
Masters: [ node2.hostname.com_0 ]
Stopped: [ node1.hostname.com_0 ]
Master/Slave Set: outside-interface-sameip.master [outside-interface-sameip.slave]
Masters: [ node1.hostname.com_0 ]
Slaves: [ node2.hostname.com_0 ]
Clone Set: monitor-eth1-clone [monitor-eth1]
Started: [ node1.hostname.com_0 node2.hostname.com_0 ]
Clone Set: monitor-eth2-clone [monitor-eth2]
Started: [ node1.hostname.com_0 node2.hostname.com_0 ]
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: inactive/disabled
這是我的 CIB 的「約束」部分:
<constraints>
<rsc_colocation id="pcs_rsc_colocation_set_drbdfs_set_drbd.master_inside-interface-sameip.master_outside-interface-sameip.master" score="INFINITY">
<resource_set id="pcs_rsc_set_drbdfs" sequential="false">
<resource_ref id="drbdfs"/>
</resource_set>
<resource_set id="pcs_rsc_set_drbd.master_inside-interface-sameip.master_outside-interface-sameip.master" role="Master" sequential="false">
<resource_ref id="drbd.master"/>
<resource_ref id="inside-interface-sameip.master"/>
<resource_ref id="outside-interface-sameip.master"/>
</resource_set>
</rsc_colocation>
<rsc_order id="pcs_rsc_order_set_drbd.master_inside-interface-sameip.master_outside-interface-sameip.master_set_drbdfs" kind="Serialize" symmetrical="false">
<resource_set action="promote" id="pcs_rsc_set_drbd.master_inside-interface-sameip.master_outside-interface-sameip.master-1" role="Master">
<resource_ref id="drbd.master"/>
<resource_ref id="inside-interface-sameip.master"/>
<resource_ref id="outside-interface-sameip.master"/>
</resource_set>
<resource_set id="pcs_rsc_set_drbdfs-1">
<resource_ref id="drbdfs"/>
</resource_set>
</rsc_order>
<rsc_location id="location-inside-interface-sameip.master" rsc="inside-interface-sameip.master">
<rule id="location-inside-interface-sameip.master-rule" score="-INFINITY">
<expression attribute="ethmon_result-eth1" id="location-inside-interface-sameip.master-rule-expr" operation="ne" value="1"/>
</rule>
</rsc_location>
<rsc_location id="location-outside-interface-sameip.master" rsc="outside-interface-sameip.master">
<rule id="location-outside-interface-sameip.master-rule" score="-INFINITY">
<expression attribute="ethmon_result-eth2" id="location-outside-interface-sameip.master-rule-expr" operation="ne" value="1"/>
</rule>
</rsc_location>
</constraints>