2

我正在寻找一种解决方案来运行大量任务并监控它们在集群上的状态。

详细说明:每个任务由 3-4 个 docker 包含的进程组成(每个进程都是一个 docker run 命令)。所有进程都必须在同一台服务器上运行。

我们所说的任务数量是一次爆发数百个任务。

我研究了几种基于 Mesos 的解决方案:

  • Chronos - 似乎它在高负载下会动摇,并且在任何情况下都更倾向于重复(cron)作业。虽然我需要一次性(繁重的)工作。
  • 自定义 Mesos FW - 似乎低级别需要我编写调度和重试机制,我会将其保存以备不时之需。
  • Aurora - 这似乎很有希望,因为每个任务都在同一个节点上运行并由多个进程组成。不过,我在这里遗漏了一些:Aurora 似乎无法将多个任务作为单个作业的一部分运行。由于我的任务都具有不同的输入,因此我可以使用具有许多(例如 400 个)实例的单个作业,并且每个任务的第一个进程(其角色是从 S3 下载输入)可以根据实例 ID 下载不同的集合. 这给我带来了另一个问题:我找不到在 .aurora 文件中使用 {{ mesos.instance }} 的工作示例,谁能给我一个示例?

感谢所有吃鱼的人

4

2 回答 2

2

你也可以看看Kubernetes(它也可以在 Mesos 中作为框架运行)。Kubernetes 有 Pod 的概念,Pod基本上是一组位于同一位置的容器。因此,在您的情况下,一个 pod 将由您的 3-4 个进程/容器组成,然后这些 pod 可以按比例放大/缩小。

关于您提到的其他解决方案的简短评论:

  • Chronos:没有真正针对您的用例
  • Custom FW:实际上并没有那么难,但最好把它保存为最后的手段。
  • Aurora:非常强大但也很复杂的框架
  • Marathon(您没有提到):针对可以轻松扩展和缩减的长时间运行的应用程序。
于 2015-10-14T12:13:02.557 回答
1

除了其他出色的答案外,您还可以查看 Two Sigma's Cook,他们最近才开源,但已经在产品中大规模使用了一段时间。

于 2015-10-14T12:53:08.123 回答