
自從使用 CentOS 7 以來,我們從常規心跳設定切換到pacemker。
主要是我們的 IP 資源在一個節點上處於活動狀態,並在發生故障轉移時切換到第二個節點。我們也會在發生故障轉移時執行一些腳本。沒什麼特別的。
為了使資源始終在主節點上啟動,我使用
pcs constraint location Cluster_IP prefers server1=master-server
我也用
pcs resource defaults resource-stickiness=INFINITY
以防止故障轉移後資源移回。
如果主設備發生故障(例如硬體故障),這對我來說效果很好。
由於如果故障轉移需要一些時間,這對我來說不是問題,因此我想在出現短暫腦裂的情況下實現某種延遲。
在執行任何操作之前,從屬設備應等待約 2 分鐘,然後再接管,以防主設備在這約 2 分鐘內再次可達。
我想知道,最好的方法是什麼?
答案1
我從未將 Corosync 中的令牌超時設定為超過 10 秒,但您可以嘗試增加/設定中token
的值(120 秒,以毫秒為單位)。應該在您的;部分中定義了解更多詳情。corosync.conf
120000
token
totem{}
corosync.conf
man corosync.conf
這應該可以防止 Corosync 在網路崩潰時宣布節點死亡 120 秒。
答案2
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% 確定這一點