unix - El-cheapo如何监视群集中的任务并在它们崩溃时重新启动( self 修复)?

标签 unix kubernetes celery apache-zookeeper airflow

考虑一个由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/

相关文章:

Python:编译成 Unix 命令行应用程序

python - 如何设置 Celery 来调用自定义 worker 初始化?

python-2.7 - celery , flask sqlalchemy : DatabaseError: (DatabaseError) SSL error: decryption failed or bad record mac

Java socket timeout connection timeout by socket connect, but fine by UNIX ping 工具

linux - unix shell 设置命令

java - 使用 JSch 通过 Jumphost 连接到远程主机时为 "reject HostKey"

ubuntu - Ubuntu 22.04 上的 k3s 网络问题 : failed to get Kubernetes server version: Get \"https://10.43.0.1:443/version?timeout=32s\": i/o timeout

kubernetes - 让 prometheus/grafana 和 k3s 协同工作

postgresql - (Kubernetes) - 重启服务器时数据库为空

rabbitmq - 为什么 celery 向rabbitmq添加了数千个队列,这些队列在任务完成后似乎仍然存在很长时间?