我有兩台配置相同的 CentOS 5 伺服器(將來可能會有更多)。我需要在其中任何一個上執行一個 cron 作業,並且它只會在其中一個上運行。
我了解 RedHat Cluster Suite(我們在其他伺服器上使用它),但它對於執行此任務來說太大了,而且對於少於三個節點來說,它的表現並不好。
有什麼輕量級的東西可以用嗎?
伺服器之間可以直接通訊。我想我可以透過 ssh 或 nrpe(這些伺服器上已經安裝了兩個伺服器)開發一些東西,但我想知道是否有一些東西已經可用。
答案1
使用 NFS 等共享檔案系統上的鎖定檔案可以非常簡單地實現這一點。但我假設您沒有該設定。
以下是我想到的一些想法:
對某些共享資源或兩台電腦都可以存取的資源實施鎖定。例如,它們都可以寫入某些外部網路資源嗎?缺點:我確信有很多競爭條件的機會。
使用 readhat DLM 並透過以下方式存取鎖定perl DLM::客戶端。缺點:正如您所提到的,可能比您想要的更重量級。
嘗試 ruby 鎖伺服器官。如果你喜歡紅寶石,可能會很有趣。
這是另一個 perl 分散式鎖定機制:IPC::儲物櫃。優點:不需要您設定其他服務,例如 Linux 核心 DLM。
使用訊息服務,例如RabbitMQ進行鎖定。再說一次,可能是相當重量級的。
我自己是 Perl 程式設計師,所以我可能會先嘗試 IPC::Locker。如果您只有兩台伺服器,我喜歡這種方法的簡單性。