linux起搏器 - 防止腦裂
自從使用 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=120s
、migration-threshold=2
和failure-timeout=121s
您的resource-stickiness
設置,您需要進行測試以確保這提供了您期望的功能以及故障計數器在原始主機恢復時的行為方式。它可能需要人工干預,但我不能 100% 確定