我一直在探索Mesos,Marathon框架来部署应用程序。我怀疑Marathon如何在应用程序被杀死时处理应用程序文件。
例如,我们正在使用通过Marathon运行的Jenkins,如果Jenkins服务器出现故障,它将由Marathon重新启动,但这次定义的旧作业将丢失。
现在我的问题是如何确保如果应用程序重新启动,那些旧的应用程序作业应该可用?
感谢。
答案 0 :(得分:2)
截至目前,mesos / marathon非常适合支持无状态应用程序,但对有状态应用程序的支持正在增加。 默认情况下,任务数据将写入沙箱,因此在任务失败/重新启动时将丢失。请注意,通常只有一小部分任务失败(例如,只有失败节点上的任务)。
现在让我们看看不同的故障情况。
从奴隶进程失败中恢复: 当只有Mesos从属进程失败(或升级)时,框架可以使用slave checkpointing重新连接到正在运行的执行程序。
执行程序失败(例如Jenkins进程失败): 在这种情况下,框架可以在某些持久性媒体上保留自己的元数据并使用它来重新启动。请注意,这是高度特定于应用程序的,因此mesos / marathon不能提供通用的方法来实现这一点(我实际上不确定在jenkins的情况下它会是什么样子)。持久数据可以写入HDFS,Cassandra,也可以查看concept of dynamic reservations。