如果發生故障,如何強制起搏器繼續重新啟動 SystemD 資源(而不是將其置於「停止」狀態)?

如果發生故障,如何強制起搏器繼續重新啟動 SystemD 資源(而不是將其置於「停止」狀態)?

我的目標是使用虛擬 IP (VIP) 實現 2 個節點 HTTP 負載平衡器。對於這個任務,我選擇了pacemaker(虛擬 IP 交換)和球童用於 HTTP 負載平衡器。負載平衡器的選擇不是這個問題的重點。 :)

我的要求很簡單 - 我希望將虛擬 IP 分配給運行健康且正常工作的 Caddy 實例的主機。

以下是我使用 Pacemaker 實現它的方法:

# Disable stonith feature
pcs property set stonith-enabled=false

# Ignore quorum policy
pcs property set no-quorum-policy=ignore

# Setup virtual IP
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=123.123.123.123

# Setup caddy resource, using SystemD provider. By default it runs on one instance at a time, so clone it and cloned one by default runs on all nodes at the same time.
# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/configuring_the_red_hat_high_availability_add-on_with_pacemaker/ch-advancedresource-haar
pcs resource create caddy systemd:caddy clone

# Enable constraint, so both VirtualIP assigned and application running _on the same_ node.
pcs constraint colocation add ClusterIP with caddy-clone INFINITY

但是,如果我透過 SSH 連接到分配了虛擬 IP 的節點,Caddy 設定檔就會出錯,並且會執行此操作systemctl restart caddy- 經過一段時間後,pacemaker 偵測到 caddy 無法啟動並簡單地將其置於stopped狀態。

如何強制起搏器繼續重新啟動我的 SystemD 資源而不是將其置於stopped狀態?

截圖1

最重要的是 - 如果我修復配置文件並執行systemctl restart caddy,它就會啟動,但起搏器只是進一步保持它的stopped狀態。

最重要的是 - 如果我停止另一個節點,虛擬 IP 不會分配到任何地方,原因如下:

# Enable constraint, so both VirtualIP assigned and application running _on the same_ node.
pcs constraint colocation add ClusterIP with caddy-clone INFINITY

有人可以指出我做錯的事情的正確方向嗎?

答案1

在 Pacemaker 中,某些故障被認為是致命的,一旦遇到,就需要手動清理它們(除非您配置了節點級防護,這將透過防護故障節點來為您清理它們)。

你需要告訴Pacemaker,start操作失敗並不是致命的。我通常也會設定一個故障逾時,在沒有隔離的叢集中,幾秒後自動清除操作故障。

pcs property set start-failure-is-fatal=false
pcs property set failure-timeout=300    

相關內容