協調腳本僅在一台相同的負載平衡伺服器上執行

協調腳本僅在一台相同的負載平衡伺服器上執行

我有兩台配置相同的 CentOS 5 伺服器(將來可能會有更多)。我需要在其中任何一個上執行一個 cron 作業,並且它只會在其中一個上運行。

我了解 RedHat Cluster Suite(我們在其他伺服器上使用它),但它對於執行此任務來說太大了,而且對於少於三個節點來說,它的表現並不好。

有什麼輕量級的東西可以用嗎?

伺服器之間可以直接通訊。我想我可以透過 ssh 或 nrpe(這些伺服器上已經安裝了兩個伺服器)開發一些東西,但我想知道是否有一些東西已經可用。

答案1

使用 NFS 等共享檔案系統上的鎖定檔案可以非常簡單地實現這一點。但我假設您沒有該設定。

以下是我想到的一些想法:

  1. 對某些共享資源或兩台電腦都可以存取的資源實施鎖定。例如,它們都可以寫入某些外部網路資源嗎?缺點:我確信有很多競爭條件的機會。

  2. 使用 readhat DLM 並透過以下方式存取鎖定perl DLM::客戶端。缺點:正如您所提到的,可能比您想要的更重量級。

  3. 嘗試 ruby​​ 鎖伺服器。如果你喜歡紅寶石,可能會很有趣。

  4. 這是另一個 perl 分散式鎖定機制:IPC::儲物櫃。優點:不需要您設定其他服務,例如 Linux 核心 DLM。

  5. 使用訊息服務,例如RabbitMQ進行鎖定。再說一次,可能是相當重量級的。

我自己是 Perl 程式設計師,所以我可能會先嘗試 IPC::Locker。如果您只有兩台伺服器,我喜歡這種方法的簡單性。

答案2

對於企業解決方案,您可以使用BMC控制-M。開源替代方案是作業排程程式

相關內容