我有一些工作需要在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