在 EC2 实例启动时停止/延迟 cron

在 EC2 实例启动时停止/延迟 cron

我们正在 EC2 实例上运行一组 cron 作业。我们的部署中有两个实例 A 和 B。A 和 B 都有在启动时运行的 Cron 作业。我们希望在启动时禁用 B 上的 cron,直到我们停止服务器 A,反之亦然,直到我们启动 A。

是否有可能以任何方式实现自动化?我们可以使用用户数据来做到这一点吗?

答案1

所以本质上你只想在 A 或 B 上运行一次你的作业,而不是在两者上运行,对吗?

您将需要一些锁定/信号量机制,“cron master”的选举,或者类似的东西。

我过去做过的一个方法是事件生成于AWS CloudWatch 规则每隔 X 分钟,将这些事件发送到SQS 队列并且集群中的所有服务器(即您的情况下的 A 和 B)都在监听队列,并且根据队列的性质,只有一个服务器会拾取事件并进行处理。

因此,您不必在每个服务器上都运行一个内部 cron 作业并尝试同步它们,而是使用类似 cron 任务在服务器之外提供服务并通过 SQS 队列触发处理作业。在像您这样的简单情况下,这应该非常有效。

希望有帮助:)

相关内容