postgresql - Apache Mesos 的持久存储

标签 postgresql distributed-computing mesos mesosphere

最近我发现了 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 .

最佳答案

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

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

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

1a) 如何组织它?您可以使用 Marathon 做到这一点,也许为您的有状态服务创建一个单独的 Marathon 实例,以便您可以为“有状态”角色创建静态预留,这样只有有状态的马拉松才能保证这些资源。

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

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

2) DRBD、MooseFS、GlusterFS、NFS、CephFS?我听说客户在 Mesos 中使用 CephFS、HDFS 和 MapRFS。 NFS 似乎也很适合。只要您的任务知道如何从放置它的任何节点访问它,您使用什么对 Mesos 来说真的无关紧要。

希望对您有所帮助!

关于postgresql - Apache Mesos 的持久存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368751/

相关文章:

docker - 关于docker的管弦乐队工具,可以最大程度地利用服务器资源

json - 在postgres中查询json

algorithm - K-way归并排序在多台主机上划分

python - PyCOMPSs 应用程序中的奇怪错误 : Script without last "y" not found

mysql - 关系数据库中记录的分布式处理

hadoop - 无法在 MESOS 框架 : Could not find or load main class org. apache.mesos.hdfs.scheduler.Main 上运行 HDFS

apache - elasticsearch-mesos不在mesosUI框架下列出

Postgresql - 基本数组和 array_agg

hibernate - Postgres 没有使用 hibernate 正确创建表?

xml - 如何在 Postgres 中将 XML 转换为 JSONB