最近我发现了一个叫Apache Mesos的东西.

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

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

比如说,我有一个由N台机器组成的集群(这是通过马拉松计划的).我想在那里运行postgresql服务器.

就是这样——一开始,我甚至不希望它具有高可用性,只希望它只是一个承载postgresql服务器的单一作业(job)(实际上已停靠).

1.如何组织?将服务器约束到特定群集 node ?使用分布式FS?

2-DRBD、MooseFS、GlusterFS、NFS、CEPFS,其中哪一个与Mesos和postgres等服务配合良好?(我在想,如果出现故障,Mesos/marathon可能会重新安排服务)

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

问题大部分是从Programmers Stack Exchange年10月10日zerkms人提出的Persistent storage for Apache Mesos个问题复制而来

推荐答案

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

  1. Persistent volumes(0.23):在启动任务时,您可以创建一个存在于任务Sandbox 之外的卷,即使在任务结束/完成后,该卷仍将保留在 node 上.当任务退出时,可以将其资源(包括持久卷)提供回框架,以便框架可以再次启动同一任务、启动恢复任务,或者启动一个新任务,该任务使用前一个任务的输出作为输入.
  2. Disk Isolation(0.22):对Sandbox 和持久卷实施磁盘配额限制.这将确保您的存储密集型框架不会阻塞磁盘并阻止其他任务运行.
  3. Dynamic Reservations(0.23):在启动任务时,您可以保留任务使用的资源(包括持久卷),以确保在任务退出时向您提供这些资源,而不是使用低于其公平份额最远的框架.

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

1a)How would one organize it?您可以通过Marathon实现这一点,或许可以为您的有状态服务创建一个单独的Marathon实例,这样您就可以为"有状态"角色创建静态保留,这样只有有状态的Marathon才能保证这些资源.

1b)Constraint a server to a particular cluster node?您可以在Marathon中轻松实现这一点,将应用程序约束到特定的主机名或具有特定属性值的任何 node (例如,NFS_Access=true).见Marathon Constraints.如果只想在一组特定的 node 上运行任务,那么只需要在这些 node 上创建静态保留.如果您需要这些 node 的可发现性,您应该查看Mesos-DNS和/或Marathon's HAProxy integration.

1c)Use some distributed FS?许多分布式文件系统提供的数据复制将保证您的数据能够经受住任何单个 node 的故障.坚持使用DFS还可以为您安排任务提供更大的灵活性,尽管这是以网络和本地磁盘之间的延迟差异为代价的.Mesos内置了从HDFS URI获取二进制文件的支持,许多客户使用HDFS将执行器二进制文件、配置文件和输入数据传递给将运行任务的从机.

2) DRBD, MooseFS, GlusterFS, NFS, CephFS?我听说有客户在Mesos上使用CEPFS、HDFS和MapRFS.NFS似乎也很适合.只要你的任务知道如何从它所在的 node 访问它,你用什么对Mesos来说真的无关紧要.

希望有帮助!

Postgresql相关问答推荐

Qt,PostgreSQL -从NUERIC列检索max int64_t/uint64_t值

如何使用docker/docker-compose转到本地主机?

PostgreSQL:在 select 和 group by 中使用不同的列不会导致错误

PostgreSQL中如何在同一行中存储多个与单个值相关的ID?

是否可以在 postgres jsonb 列中的列表上创建索引

我在try 访问我的数据库表时在 postgresql 中收到 aclcheck_error 错误

Postgres >= 和 <= 具有特殊字符的行为

无法从 docker-compose 上的其他服务解析 postgres 主机名

将 postgres 从属提升为主 node

如何将 NULL 值插入 UUID 而不是零

如何防止 PDO 将问号解释为占位符?

Select 日期最高的行

PostgreSQL ,从 2 个表中 Select ,但仅从表 2 中 Select 最新的元素

MAC OS X 上的 Postgres 权限被拒绝

声明变量set = select

如何语法判断 PostgreSQL 配置文件?

为什么 rake db:migrate 有时会在 structure.sql 中添加尾随空格?

使用 RPostgreSQL 写入特定模式

如何在 redshift 中对字段进行 GROUP BY 和 CONCATENATE

Capistrano 与 PostgreSQL,错误:database is being accessed by other users