Mesos Marathon 如何处理应用程序数据持久性?

How Mesos Marathon handle application data persistence?

我一直在探索 Mesos,Marathon 框架来部署应用程序。我怀疑 Marathon 在应用程序被终止时如何处理应用程序文件。

例如,我们正在使用 Jenkins,它是 运行 通过 Marathon 的,如果 Jenkins 服务器出现故障,它将由 Marathon 再次重新启动,但这次定义的旧作业将丢失。

现在我的问题是如何确保如果应用程序重新启动,那些旧的应用程序作业应该可用?

谢谢。

截至目前,mesos/marathon 在支持无状态应用程序方面做得很好,但对有状态应用程序的支持正在增加。 默认情况下,任务数据被写入沙箱,因此当任务 failed/restarted 时将丢失。请注意,通常只有一小部分任务会失败(例如,只有失败节点上的任务)。

现在让我们来看看不同的失败场景。

  1. 从从属进程故障中恢复: 当只有 Mesos 从属进程失败(或升级)时,框架可以使用 slave checkpointing 重新连接到 运行 执行程序。

  2. 执行器故障(例如 Jenkins 进程故障): 在这种情况下,框架可以将它自己的元数据保存在一些持久性媒体上并使用它来重新启动。请注意,这是高度特定于应用程序的,因此 mesos/marathon 无法提供通用的方法来执行此操作(实际上我不确定在 jenkins 的情况下会是什么样子)。持久数据可以写入 HDFS、Cassandra,或者您可以查看 concept of dynamic reservations