Linux
如何執行 cron 作業故障轉移?
使用兩台 Debian 伺服器,我需要為一次只能在一台伺服器上呼叫的 cron 作業設置一個強大的故障轉移環境。
在 /etc/cron.d 中移動文件應該可以解決問題,但是是否有簡單的 HA 解決方案來執行此類操作?如果可能的話,不要心跳;)
我認為心跳/起搏器將是最好的解決方案,因為他們可以為您處理很多比賽條件、圍欄等,以確保工作一次只能在一台主機上執行。自己設計一些東西是可能的,但它可能無法解釋這些包所做的所有場景,你最終會更換大部分(如果不是全部)輪子。
如果您並不真正關心這些事情並且想要更簡單的設置。我建議將伺服器上的 cron 作業錯開幾分鐘。然後,當作業在主伺服器上開始時,它可以以某種方式在作業操作的任何共享資源上留下標記(您沒有指定這一點,所以我故意含糊不清)。如果是數據庫,他們可以更新表中的欄位,或者如果它位於共享文件系統上,則鎖定文件。
當作業在第二台伺服器上執行時,它可以檢查標記是否存在,如果存在則中止。