2015-02-06 47 views
33

最近我发现了这样一个Apache Mesos。Apache Mesos的持久存储器

这一切看起来令人惊讶的所有演示和实例。我很容易想象如何为无国籍工作竞选 - 这自然地符合整个想法。

Bot如何处理有状态的长时间运行的作业?

说,我有由N个机器群集(和经由马拉松调度)。我想在那里运行postgresql服务器。

这就是它 - 一开始我甚至不希望它是高度可用的,但只是单纯的承载一个PostgreSQL服务器的单一工作(实际上Dockerized)。

1-如何组织它?将服务器约束到特定的集群节点?使用一些分布式FS?

2- DRBD,MooseFS,GlusterFS,NFS,CephFS,这其中的一个与Mesos和Postgres的类似服务方面发挥呢? (我在想这里Mesos /马拉松可能会重定位服务的可能性,如果下降)

3-请告诉我的方法是否在哲学方面是错误的(数据服务器的DFS和某种服务器切换像Mesos的顶部)从Persistent storage for Apache Mesos

问题主要是复制,通过zerkmsProgrammers Stack Exchange问的Postgres。

回答

43

非常好的问题。以下是Mesos中的一些即将发布的功能,旨在改进对有状态服务的支持以及相应的当前解决方法。

  1. Persistent volumes(0.23):当启动一个任务,你可以创建一个存在任务的沙箱之外,任务甚至死亡后的节点上会持续/完成音量。当任务退出时,其资源(包括持久性卷)可以提供给框架,以便框架可以再次启动相同的任务,启动恢复任务或启动消耗前一任务输出的新任务作为其输入。
    • 当前解决方法:将您的状态保存在沙箱外的某个已知位置,并让您的任务尝试手动恢复它。也许将其保存在分布式文件系统/数据库中,以便可以从任何节点访问它。
  2. DiskIsolation(0.22):对沙箱以及持久卷实施磁盘配额限制。这可确保您的存储空间庞大的框架无法阻塞磁盘并阻止其他任务运行。
    • 当前的解决办法:监视磁盘使用带外,并运行定期清理作业。
  3. Dynamic Reservations(0.23):当启动一个任务,你可以预留资源的任务用途(包括持久卷),以保证而不是去,他们在任务退出提供给您,无论框架是最远低于公平份额。
    • 当前解决方法:使用slave的--resources标志为从站启动时为您的框架静态保留资源。

至于具体使用情况和问题:

1A)如何将一个组织呢?您可以使用Marathon来做到这一点,也许为您的有状态服务创建一个单独的Marathon实例,以便您可以为“有状态”角色创建静态保留,从而只有有状态的Marathon才能保证这些资源。

1b)将服务器约束到特定的集群节点?您可以在Marathon中轻松完成此任务,将应用程序限制到特定主机名或具有特定属性值的任何节点(例如NFS_Access = true)。见Marathon Constraints。如果您只想在特定的一组节点上运行任务,则只需在这些节点上创建静态保留。如果您需要发现这些节点,您应该查看Mesos-DNS和/或Marathon's HAProxy integration

1c)使用一些分布式FS?由许多分布式文件系统提供的数据复制将确保您的数据可以在任何单个节点的故障中幸存下来。坚持使用DFS还可以提供更大的灵活性,以便您可以安排任务的时间安排,但代价是网络和本地磁盘之间的延迟差异。 Mesos内置支持从HDFS uris获取二进制文件,许多客户使用HDFS将执行程序二进制文件,配置文件和输入数据传递到其任务将运行的从站。

2)DRBD,MooseFS,GlusterFS,NFS,CephFS?我听说过使用CephFS,HDFS和MapRFS与Mesos的客户。 NFS看起来也很容易。只要你的任务知道如何从它放置的任何节点访问它,对Mesos来说,真的没关系。

希望有帮助!

+2

更新:持续卷没有落入0.22(全部),因此您必须等待0.23才能开始使用持久卷或动态保留。 – Adam 2015-03-30 22:53:08

+0

动态保留现在被推到0.24 – Sergey 2015-07-01 14:33:29

+0

永久卷和动态保留都将在Mesh 0.23的alpha/experimental状态下可用。预计他们将在0.24生产就绪。 – Adam 2015-07-01 18:18:35