考虑一个由N个节点组成的Linux集群。它需要运行M个任务。每个任务可以在任何节点上运行。假设群集已启动并正常工作。
问题:监视M个任务正在运行的最简单方法是什么,如果任务异常退出(退出代码!= 0),请在任何启动的计算机上启动新任务。忽略网络分区。
M个任务中有两个具有依赖性,因此,如果任务'm'停工下来,则应停止任务'm1'。然后启动“m”,启动时可以重新启动“m1”。 “m1”取决于“m”。我可以为此提供业务流程脚本。
我最终想和Kubernetes一起工作,它可以自我修复,但是我还没有。
最佳答案
正确的(tm)方法是设置重试,可能有一些退避策略。在StackOverflow上有很多类似的问题,例如one of them。
如果仍要进行监视并显式重新启动任务,则可以根据将为您完成任务的任务事件来实现服务。这非常简单,并且证明了Celery是多么出色。该服务应处理task-failed事件。 same page上是一个示例。
关于unix - El-cheapo如何监视群集中的任务并在它们崩溃时重新启动( self 修复)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235137/