协调一个脚本只在一个相同的负载平衡服务器上运行

我有两个相同configuration的CentOS 5服务器(未来可能会更多)。 我需要在其中的任何一个上运行一个cron作业,并且只能在其中一个上运行。

我知道RedHat集群套件(我们在其他服务器上使用它),但是对于这个任务来说这是一个太大的枪支,再加上它对于less于三个节点的performance并不好。

有什么重量可以使用吗?

服务器可以直接相互通信。 我想我可以通过ssh或nrpe(已经安装在这些服务器上的两台服务器)开发一些东西,但是我想知道是否有可用的东西。

对于共享文件系统(如NFS)上的locking文件,这非常简单。 我假设你没有这个设置。

这里有一些想法:

  1. 在一些共享资源上实现一个锁,或者两台机器都可以访问的东西。 例如,他们都可以写入一些外部networking资源? 下滑:我敢肯定,很多比赛的机会。

  2. 使用readhat DLM并通过perl DLM :: Client访问locking。 下行:如你所说,可能比你想要的更重。

  3. 试试ruby锁服务器官员 。 如果你是ruby,可能会很有趣。

  4. 这是另一个perl分布式locking机制: IPC :: Locker 。 优点:不需要你像Linux内核DLM一样设置另一个服务。

  5. 使用像RabbitMQ这样的消息服务来进行locking。 再次,可能相当重量级。

我自己是一个perl程序员,所以我可能首先尝试IPC :: Locker。 如果你只有两台服务器,我喜欢这种方法的简单性。

对于企业解决scheme,您可以使用BMC Control-M 。 一个开源的替代scheme是Job Scheduler