Linux

起搏器未檢測到節點斷開連接

  • November 27, 2017

我在 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 操作,因此沒有集群操作被認為是“安全的”。

您將 clustersno-quorum-policy屬性設置為什麼?是freeze偶然的嗎?您不能使用stop,這是預設設置,因為沒有仲裁的節點將無法停止其資源,因為 GFS2 需要仲裁才能解除安裝或以其他方式訪問其數據。

此外,club您的範例中是 DC(指定控制器)嗎?它跟踪集群的資源。其他節點必須達到法定人數才能選舉新的 DC。

在三節點集群中,兩個節點的 NIC 同時發生故障的可能性極小。但是,如果您出於某種原因仍然擔心,您可以將更多節點添加到集群中,以僅充當仲裁節點(使用-inf:位置約束來保持資源遠離它們),直到風險變得令人滿意地小。

為了擺脫這種情況,我只需“手動”重置所有三個框:echo b > /proc/sysrq-trigger

引用自:https://serverfault.com/questions/842930