【问题标题】:How to create leases to avoid duplicate cron-jobs when deploying application across multiple instances?跨多个实例部署应用程序时如何创建租约以避免重复的 cron 作业?
【发布时间】:2022-01-26 12:10:22
【问题描述】:

我有一个 Dockerized Django 应用程序,其中有许多需要执行的 CRON 作业。

现在我使用 Supercronic 包运行它(建议在容器内运行 cron-jobs)。出于冗余目的,这将部署在两台服务器上,即如果一台出现故障,另一台需要接管并执行 cron-jobs。

但是,问题是如果没有任何配置,这将导致重复的 cron-jobs 被执行,每个服务器一个。我读到您可以为 cron-jobs 设置一个称为“租约”的东西来检索,以避免来自不同服务器的重复,但我还没有找到任何关于如何设置的说明。

有人可以在这里指出我正确的方向吗?

【问题讨论】:

    标签: docker cron


    【解决方案1】:

    如果您在两个不同的实例中运行 Supercron,Supercron 不知道作业是否被触发,由应用程序来处理一致性

    您可以通过多种方式执行此操作,既可以使用文件或数据库条目控制状态,也可以使用任何更好的方式让 docker 应用程序在开始执行实际进程之前检查状态。

    【讨论】:

    • 你能给我一个很好的例子来说明如何实际检查过程的状态吗?让每个 cron 进程完成的数据库条目感觉很糟糕,但这可能是最好的方法。
    猜你喜欢
    • 2022-06-27
    • 2020-02-17
    • 2019-02-10
    • 1970-01-01
    • 2014-08-17
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多