1

我想使用 Apache Marathon 来管理集群产品中的资源。Mesos 和 Marathon 解决了一些需要通过 HA、故障转移等保持运行的附加组件的“集群资源管理器”问题。

但是,有许多服务需要保持运行以保持 mesos 和 marathon 运行(如 zookeeper、mesos 本身等)。我们可以使用什么来保持这些服务与 HA、故障转移等一起运行?

似乎跨集群解决这个问题(管理有多少 zookeeper 实例等,以及它们在哪里运行以及它们如何故障转移)正是 mesos/marathon 试图解决的问题。

4

2 回答 2

3

正如Mesos HA 文档所解释的,您可以启动多个 Mesos 主节点并让 ZK 选举领导者。那么如果你的领主失败了,你还有至少2个可以处理的事情。通常使用 systemd 之类的东西在同一主机上自动重启 mesos-master(如果它仍然健康的话),或者使用 Amazon AutoScalingGroups 之类的东西来确保即使主机死机也始终拥有 3 台主机。

Marathon 在其HA 模式下也可以这样做(默认情况下,如果您启动多个指向同一个 znode 的实例)。许多用户在与他们的 Mesos 主节点相同的 3 个节点上启动这些,使用 systemd 重新启动失败的 Marathon 服务,并使用相同的 ASG 来确保有 3 个 Mesos/Marathon 主节点。

这些相同的 3 个节点通常也被配置为 ZK 仲裁,因此您只需管理 3 个节点即可在 Mesos 之外运行所有这些服务。

可以想象,您可以将 Mesos-master 和 Marathon 作为 Marathon/Mesos 任务引导到集群中。启动一个 Mesos+Marathon 主节点以启动集群,然后在 Marathon 中创建一个 Mesos-master 应用程序以启动 2-3 个主节点作为 Mesos 任务,并在 Marathon 中创建一个 Marathon-master 应用程序以启动几个 HA Marathon 实例(作为 Mesos 任务)。一旦它们是健康的,您可以杀死原来的独立 Mesos/Marathon 主服务器,集群将故障转移到自托管的 Mesos 和 Marathon 主服务器,如果它们发生故障,它们将在集群的其他地方自动重新启动。也许这也适用于 ZK。您可能需要Mesos-DNS和/或 ELB 之类的东西来让其他服务找到 Mesos/Marathon。我怀疑是否有人以这种方式运行 Mesos,但这太疯狂了,它可能会起作用!

于 2015-04-03T15:30:30.943 回答
0

为了理解这一点,我建议您花几分钟时间阅读 Mesos 官方文档中的架构HA 部分。在那里,清楚地解释了 Mesos 核心中的 HA/故障转移是如何处理的(顺便说一句,没什么神奇的——我知道的许多系统几乎都使用这种模型,包括 HBase、Storm、Kafka 等)。

另外,请注意——自然——保持少数 Mesos 主服务器/Zk 存活的挑战与保持集群中潜在的 10000 个进程存活、驱逐它们或故障转移(在扇出、内存占用、吞吐量等)。

于 2015-04-03T05:52:53.890 回答