【发布时间】:2011-09-21 10:13:29
【问题描述】:
我正在寻找更好的解决方案来在负载平衡的环境中处理我们的 cron 任务。
目前有:
- PHP 应用程序在负载平衡器后面的 3 个 CentOS 服务器上运行。
- 需要定期运行但一次只能在单台计算机上运行的任务。
- 设置好旧 cron 以在第一台服务器上运行这些任务。
- 如果第一台服务器出于某种原因无法运行,则会出现问题。
正在寻找:
- 更强大和去中心化的东西。
- 对任务进行负载平衡,这样多个任务将只运行一次,但会在随机/不同的服务器上运行以分散负载。
- 防止在第一台服务器出现故障时任务不运行。
- 能够管理任务并在理想情况下使用 Web 界面查看汇总报告。
- 出现任何问题时的通知。
该解决方案不需要在 PHP 中实现,但它会很好,因为它可以让我们在需要时轻松调整它。
我发现了两个看起来很有希望的项目。 GNUBatch 和 Job Scheduler。很可能会进一步测试两者,但我想知道是否有人对上述问题有更好的解决方案。
谢谢。
【问题讨论】:
-
可以通过在最可靠的服务器(或完全其他服务器)上通过 SSH 随机执行其中一台服务器上的实际作业来解决一次一个问题。由于只有一台机器负责调度,因此您不必担心所有服务器之间的同步/锁定。
标签: php cron load-balancing