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

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

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

我了解 RedHat Cluster Suite(我们在其他服务器上使用它),但是对于这项任务来说,它的威力太大了,而且对于少于三个节点的情况,它的表现确实不太好。

有没有什么轻量级的东西我可以用来实现这个目的?

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

答案1

使用 NFS 等共享文件系统上的锁文件可以相当简单地完成此操作。不过我假设您没有进行该设置。

我想到了一些想法:

  1. 对某些共享资源或两台机器都可以访问的资源实施锁定。例如,它们都可以写入某些外部网络资源吗?缺点:我确信存在大量竞争条件的机会。

  2. 使用 readhat DLM 并通过以下方式访问锁定perl DLM::客户端。缺点:正如你提到的,可能比你想要的更重。

  3. 尝试 ruby​​ lockserver。如果您对 Ruby 感兴趣的话,可能会很有趣。

  4. 这是另一个 perl 分布式锁定机制:IPC::储物柜。优点:不需要您设置另一个服务(如 Linux 内核 DLM)。

  5. 使用类似以下的消息服务RabbitMQ进行锁定。同样,这可能是相当重量级的。

我本人是一名 perl 程序员,所以我可能会先尝试 IPC::Locker。如果您只有两台服务器,我喜欢这种方法的简单性。

答案2

对于企业解决方案,您可以使用BMC 控制-M. 一个开源替代方案是作业调度器

相关内容