我有一些工作需要在50多臺服務器上完成。第一步是將一些源代碼的更新版本簽出到共享目錄中(假設所有共享驅動器都已安裝)。其次是在每臺服務器上執行一些工作。腳本在50臺服務器上運行。我如何確保只有一個人執行特定的步驟?
我寧願讓這兩個腳本在每臺服務器上運行。所有50多臺服務器都是從一張磁盤映像中克隆出來的,因此我無法定製其中的任何一臺服務器。
當50個服務器運行第一個腳本時,我只想要第一個嘗試運行它以實際運行它的腳本。其他我想簡單地退出。實際運行腳本的服務器應該更新共享目錄,然後退出。之後,第二個腳本將運行並根據第一臺服務器獲取的更新代碼在所有服務器上執行該工作。
這樣做的最好方法是什麼?我能否可靠地讓第一個腳本在一臺服務器上運行,並創建一個文件或某種可以讓其他服務器遠離的「信號」或「鎖定」?
使這個更復雜的是,我正在考慮讓腳本從每個服務器上的相同cron文件運行 - 這意味着所有腳本可以嘗試同時運行它,假設它們的所有時鐘都設置相同。
我希望這些將從bash腳本運行。這是否有意義作爲一種方法?
serverfault.com的好問題。 – pilcrow 2013-05-06 17:43:02
你想讓它們按特定順序運行嗎? – 2013-05-06 18:01:56
@AdrianFrühwirth50+服務器運行第二個腳本的順序無關緊要。他們將在自己的文件系統上運行它,不會互相干擾。 – 2013-05-06 18:10:18