【问题标题】:Persistent storage for Apache MesosApache Mesos 的持久存储
【发布时间】:2015-04-06 18:30:38
【问题描述】:

最近我发现了一个像 Apache Mesos 这样的东西。

在所有演示和示例中,这一切看起来都令人惊叹。我可以很容易地想象一个人将如何从事无国籍的工作——这自然符合整个想法。

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

比如说,我有一个由 N 台机器组成的集群(并且是通过 Marathon 安排的)。我想在那里运行一个 postgresql 服务器。

就是这样 - 起初我什至不希望它具有高可用性,而只是一个托管 postgresql 服务器的单个作业(实际上是 Dockerized)。

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

2- DRBD、MooseFS、GlusterFS、NFS、CephFS,其中哪一个与 Mesos 和 postgres 等服务配合得很好? (我在这里考虑 Mesos/marathon 如果出现故障可能会重新定位服务)

3- 请说明我的方法在哲学方面是否错误(数据服务器的 DFS 和 Mesos 顶部的 postgres 等服务器的某种切换)

这个问题主要抄自Persistent storage for Apache Mesos,由zerkmsProgrammers Stack Exchange提出。

【问题讨论】:

    标签: postgresql distributed-computing mesos mesosphere


    【解决方案1】:

    很好的问题。以下是 Mesos 中一些即将推出的功能,用于改进对有状态服务的支持,以及相应的当前解决方法。

    1. Persistent volumes (0.23):启动任务时,您可以创建一个存在于任务沙箱之外的卷,并且即使在任务终止/完成后仍将保留在节点上。当任务退出时,它的资源(包括持久卷)可以返回给框架,以便框架可以再次启动相同的任务、启动恢复任务或启动消耗前一个任务输出的新任务作为其输入。
      • 当前解决方法:将您的状态保留在沙盒之外的某个已知位置,并让您的任务尝试手动恢复它。也许将它保存在分布式文件系统/数据库中,以便可以从任何节点访问它。
    2. Disk Isolation (0.22):对沙盒和持久卷实施磁盘配额限制。这可确保您的存储密集型框架不会阻塞磁盘并阻止其他任务运行。
      • 当前解决方法:监控带外磁盘使用情况,并定期运行清理作业。
    3. Dynamic Reservations (0.23):启动任务时,您可以保留任务使用的资源(包括持久卷),以确保在任务退出时将它们提供给您,而不是转到最低于其公平份额的任何框架.
      • 当前解决方法:使用从属设备的 --resources 标志在从属设备启动时为您的框架静态保留资源。

    至于您的具体用例和问题:

    1a) 如何组织它? 你可以用 Marathon 来做这件事,也许为你的有状态服务创建一个单独的 Marathon 实例,这样你就可以为“有状态”角色创建静态预留,这样只有有状态的 Marathon 才能得到这些资源。

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

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

    2) DRBD、MooseFS、GlusterFS、NFS、CephFS? 我听说有客户将 CephFS、HDFS 和 MapRFS 与 Mesos 结合使用。 NFS 似乎也很适合。只要您的任务知道如何从放置它的任何节点访问它,对于 Mesos 来说,您使用什么并不重要。

    希望有帮助!

    【讨论】:

    • 更新:0.22 版(完整版)没有持久化卷,因此您必须等待 0.23 版才能开始使用持久卷或动态预留。
    • 动态预订现在被推到 0.24
    • Persistent Volumes 和 Dynamic Reservations 都将在 Mesos 0.23 的 alpha/experimental 状态下可用。预计它们将在 0.24 中投入生产。
    • 嘿@Adam 我正在回答这个老问题。我在 ClusterHQ 工作,我们有一个使用 Marathon + Flocker 的演示,以帮助在有状态容器从 mesos slave 移动/重启到另一个 slave 时迁移卷。这是最近的事情,我们希望得到反馈。说明在这里:clusterhq.com/2015/10/06/marathon-ha-demo
    • 0.25.0 中仍然没有持久卷以及动态预留。有人知道什么时候可以使用吗?这对于 Mesos/Marathon 恕我直言的所有有状态服务来说几乎是一个阻碍......
    猜你喜欢
    • 2018-07-04
    • 2023-03-19
    • 2012-02-02
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多