Linux
起搏器未檢測到節點斷開連接
我在 Centos 7 主機上設置了三個 Centos 7 KVM 虛擬機,目的是在我們部署生產系統之前測試集群配置的各個方面。
這些節點稱為 clua、club 和 cluc。配置的資源很少:
- 一個 fence_virsh STONITH 資源複製集
- dlm、clvmd 和 GFS2 文件系統資源複製集
我一直在測試各種失敗場景。導致問題的一個是我通過 ifdown’ing 三個節點中的兩個節點上的介面導致節點彼此失去聯繫。
在這裡的測試中,我
ifdown
編輯了 clua 和 cluc 的介面,只留下了 club。我已確認我無法在此狀態下的節點之間 ping。在俱樂部,它或多或少地達到了我的預期:
root@itkclub ~ # pcs status Cluster name: tclu Stack: corosync Current DC: club (version 1.1.15-11.el7_3.4-e174ec8) - partition WITHOUT quorum Last updated: Thu Apr 6 16:23:28 2017 Last change: Thu Apr 6 16:18:33 2017 by root via cibadmin on clua 3 nodes and 12 resources configured Node clua: UNCLEAN (offline) Node cluc: UNCLEAN (offline) Online: [ club ] Full list of resources: Clone Set: dlm-clone [dlm] dlm (ocf::pacemaker:controld): Started clua (UNCLEAN) dlm (ocf::pacemaker:controld): Started cluc (UNCLEAN) Started: [ club ] Clone Set: clvmd-clone [clvmd] clvmd (ocf::heartbeat:clvm): Started clua (UNCLEAN) clvmd (ocf::heartbeat:clvm): Started cluc (UNCLEAN) Started: [ club ] Clone Set: varopt_fs-clone [varopt_fs] varopt_fs (ocf::heartbeat:Filesystem): Started clua (UNCLEAN) varopt_fs (ocf::heartbeat:Filesystem): Started cluc (UNCLEAN) Started: [ club ] Clone Set: virsh-fencing-clone [virsh-fencing] virsh-fencing (stonith:fence_virsh): Started clua (UNCLEAN) virsh-fencing (stonith:fence_virsh): Started cluc (UNCLEAN) Started: [ club ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
但是,在其他兩個節點(我
ifdown
編輯介面的節點)上,它似乎沒有檢測到任何錯誤:root@itkcluc ~ # pcs status Cluster name: tclu Stack: corosync Current DC: club (version 1.1.15-11.el7_3.4-e174ec8) - partition with quorum Last updated: Thu Apr 6 16:26:01 2017 Last change: Thu Apr 6 16:18:33 2017 by root via cibadmin on clua 3 nodes and 12 resources configured Online: [ clua club cluc ] Full list of resources: Clone Set: dlm-clone [dlm] Started: [ clua club cluc ] Clone Set: clvmd-clone [clvmd] Started: [ clua club cluc ] Clone Set: varopt_fs-clone [varopt_fs] Started: [ clua club cluc ] Clone Set: virsh-fencing-clone [virsh-fencing] Started: [ clua club cluc ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled root@itkcluc ~ # ping club PING club (192.168.1.12) 56(84) bytes of data. ^C --- club ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 2999ms root@itkcluc ~ # ping clua PING clua (192.168.1.2) 56(84) bytes of data. ^C --- clua ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 2999ms
為什麼 clua 和 cluc 上的起搏器沒有檢測到它不能與任何其他節點通信?
一旦它進入這樣的狀態,正確的恢復程序是什麼?
其餘節點都沒有仲裁,因此,不能採取任何 STONITH 操作,因此沒有集群操作被認為是“安全的”。
您將 clusters
no-quorum-policy
屬性設置為什麼?是freeze
偶然的嗎?您不能使用stop
,這是預設設置,因為沒有仲裁的節點將無法停止其資源,因為 GFS2 需要仲裁才能解除安裝或以其他方式訪問其數據。此外,
club
您的範例中是 DC(指定控制器)嗎?它跟踪集群的資源。其他節點必須達到法定人數才能選舉新的 DC。在三節點集群中,兩個節點的 NIC 同時發生故障的可能性極小。但是,如果您出於某種原因仍然擔心,您可以將更多節點添加到集群中,以僅充當仲裁節點(使用
-inf:
位置約束來保持資源遠離它們),直到風險變得令人滿意地小。為了擺脫這種情況,我只需“手動”重置所有三個框:
echo b > /proc/sysrq-trigger