Python 芹菜击败HA-使用起搏器?

Python 芹菜击败HA-使用起搏器?,python,celery,pacemaker,Python,Celery,Pacemaker,就我对芹菜的了解而言,芹菜节拍是一种被视为SPOF的调度器。这意味着服务崩溃,没有任何计划和运行 我的情况是,我需要一个HA,它有两个调度器:master/slave,master定期(比如说每30分钟)进行一些调用,而slave可以空闲 当主服务器崩溃时,从服务器需要成为主服务器,从死亡的主服务器中提取剩余的数据,并执行定期任务。(领导人选举) 这里的要求是: 每30分钟安排一次任务(这可以通过芹菜节拍实现) 这项任务不是原子的,它不是每30分钟一次失败或成功的呼叫。比方说,每30分钟,任务会

就我对芹菜的了解而言,芹菜节拍是一种被视为SPOF的调度器。这意味着服务崩溃,没有任何计划和运行

我的情况是,我需要一个HA,它有两个调度器:master/slave,master定期(比如说每30分钟)进行一些调用,而slave可以空闲

当主服务器崩溃时,从服务器需要成为主服务器,从死亡的主服务器中提取剩余的数据,并执行定期任务。(领导人选举)

这里的要求是:

  • 每30分钟安排一次任务(这可以通过芹菜节拍实现)
  • 这项任务不是原子的,它不是每30分钟一次失败或成功的呼叫。比方说,每30分钟,任务会发出50个不同的呼叫。如果master完成了25个调用并崩溃,那么从机将继续完成剩余的25个调用,而不是再次执行所有50个调用
  • 当失效的主机从故障中重新启动时,它需要意识到已经有一个主机在运行。无论如何,它不需要作为主机出现,只需要保持空闲直到运行的主机再次崩溃
  • 起搏器是实现这一目标的正确工具吗?与芹菜结合使用?

    简短的回答是“是”。起搏器会做你想做的,这里

    较长的答案是,你的体系结构是棘手的,因为需要重新启动的中间序列。 这里有两种解决方案。第一种方法是使用某种数据库(或DRBD文件系统)记录50个调用中有25个已经完成。问题不在于24个已完成的调用,也不在于25个尚未完成的调用,而在于系统崩溃时正在执行的调用。打电话给25号,比如说。如果C25还没有启动,那么你就没事了。从机将在起搏器控制下启动,DRBD文件系统将进行故障切换,新的主机将执行#25到#50。如果叫了25号,但老主人还没有把它标记为25号,会发生什么

    您可以设计它,以便它在实际执行调用之前将调用标记为完成,在这种情况下,C25不会在这个特定的场合被调用,或者您可以在调用之后将其标记为完成,在这种情况下,C25将被调用两次

    理想情况下,您将使调用幂等。这是你的第二个选择。在这种情况下,再次调用C1->C25并不重要,因为没有重复影响。C26->C50只调用一次。我对您的体系结构了解不够,无法确定哪种体系结构可以工作,但希望这能有所帮助

    心脏起搏器肯定会处理故障。添加DRBD,您可以在两个系统之间保存状态。但是,您需要自己解决部分调用问题