1

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

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

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

谢谢。

4

1 回答 1

2

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

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

  1. 从从属进程故障中恢复:当只有 Mesos 从属进程发生故障(或升级)时,框架可以使用从属检查点重新连接到正在运行的执行程序。

  2. 执行器故障(例如 Jenkins 进程故障):在这种情况下,框架可以将它自己的元数据保存在一些持久性媒体上并使用它来重新启动。请注意,这是高度特定于应用程序的,因此 mesos/marathon 不能提供通用的方法来做到这一点(实际上我不确定在詹金斯的情况下会是什么样子)。持久数据既可以写入 HDFS、Cassandra,也可以查看动态保留的概念

于 2015-06-25T05:29:39.563 回答