据我所知,celery beat 是一个被认为是 SPOF 的调度程序。这意味着服务崩溃,没有任何东西会被安排和运行。
我的情况是,我需要一个带有两个调度程序的 HA 设置:主/从,主周期性地进行一些调用(比如说每 30 分钟),而从可以空闲。
当 master 崩溃时,slave 需要成为 master 并从死去的 master 身上捡起剩下的东西,并执行周期性任务。(领导人选举)
这里的要求是:
- 任务每 30 分钟安排一次(这可以通过 celery beat 来实现)
- 该任务不是原子的,它不仅仅是每 30 分钟一次失败或成功的调用。假设每 30 分钟,该任务会发出 50 个不同的调用。如果 master 完成 25 次并崩溃,slave 预计会出现并完成剩余的 25 次,而不是再次完成所有 50 次调用。
- 当死掉的master从故障中重新启动时,它需要意识到已经有一个master在运行。无论如何,它不需要作为主人出现,只需要保持空闲直到正在运行的主人再次崩溃。
起搏器与芹菜相结合是实现这一目标的正确工具吗?