Linux

linux起搏器 - 防止腦裂

  • March 26, 2018

自從使用 CentOS 7 以來,我們從正常的心跳設置切換到了起搏器。

主要是我們的 IP 資源在一個節點上處於活動狀態,並在發生故障轉移時切換到第二個節點。我們還執行一些腳本以防故障轉移。沒什麼特別的。

為了使資源始終在主節點上啟動,我使用

pcs constraint location Cluster_IP prefers server1=master-server

我也用

pcs resource defaults resource-stickiness=INFINITY

以防止資源在故障轉移後移回。

如果主失敗(例如硬體故障),這對我來說很好。

因為如果故障轉移需要一些時間對我來說不是問題,我想在短暫的腦裂的情況下實施某種延遲。

在做任何事情之前,奴隸應該等待〜2分鐘,然後才能接管,以防在這〜2分鐘內再次可以​​訪問主人。

我想知道,最好的方法是什麼?

我從來沒有將 Corosync 中的令牌超時設置為 10 秒以上,但您可以嘗試增加/設置您的值token(以毫秒為單位的 120 秒)。應該在你的部分中定義;了解更多詳情。corosync.conf``120000``token``totem{}``corosync.conf``man corosync.conf

這應該可以防止 Corosync 在網路崩潰時宣布節點死亡 120 秒。

您可以更改資源的監視間隔,op monitor interval=Ns其中N是秒數,然後將migration-threshold資源上的設置為2。請記住,120s您可能會看到 120-240 秒的總延遲,具體取決於監視間隔中初始故障發生的時間。

對此還有其他注意事項,因為應用到的失敗計數器migration-threshold不會在成功時重置。為此,您還需要設置failure-timeout或手動干預。

使用op monitor interval=120smigration-threshold=2failure-timeout=121s您的resource-stickiness設置,您需要進行測試以確保這提供了您期望的功能以及故障計數器在原始主機恢復時的行為方式。它可能需要人工干預,但我不能 100% 確定

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