高可用性

了解 DC/OS 中的高可用特性和最佳实践

领导者/追随者架构

Mesos

Mesos 可以高可用性模式运行,需要运行三个或五个主控。在 HA 模式下运行时,一个主控被选为领导者,其他主控则是追随者。每个主控都有一个复制了的日志,其中包含有关群集的某种状态。ZooKeeper 执行选举以选择领导管理节点。有关这方面的更多信息,请参阅 .

Marathon

Marathon 可以高可用性模式与一个选举的领导者一起运行,使得可以运行多个 Marathon 实例(HA 为至少两个)。Marathon 使用 ZooKeeper 进行领导者选举。追随者不接受写入或 API 请求;相反,追随者代理所有 API 请求代理给领先的 Marathon 实例。

ZooKeeper

DC/OS 中的多个服务使用 ZooKeeper 以取得一致性。ZooKeeper 可用作分布式锁定服务、状态存储库和消息传递系统。ZooKeeper 使用 Paxos-like) 日志复制和领导者/追随者架构,以保持多个 ZooKeeper 实例之间的一致性。有关 ZooKeeper 如何工作的详细说明,请参阅 .

故障域隔离

  • 物理域:包括机器、机架、数据中心、地区和可用性区域。

通过 DC/OS,您可以在机架之间将主控分配给 HA。代理可以跨地区分配,建议您用描述其位置的属性来标记代理。ZooKeeper 等同步服务也应留在同一区域内,以减少网络延迟。有关详细信息,请参阅实现高可用性的 配置区域和地区

需要 HA 的应用程序应跨故障域分配。Marathon 可以使用 来实现。

问题的分离

高可用性服务应当分离,责任在服务之间分担。例如,Web 服务应从数据库和共享缓存中分离。

消除单一故障点

其他常见的单一故障点包括:

  • 单个数据库实例(如 MySQL)
  • 一次性服务
  • 非 HA 负载均衡器

快速故障检测

快速故障检测有多种形式。ZooKeeper 等服务可用于提供故障检测,例如检测网络分区或主机故障。服务健康状况检查也可用于检测某些类型的故障。作为最佳实践,服务应揭示健康检查端点,这可以被 Marathon 等服务所使用。

快速故障切换

发生故障时,故障切换 应尽可能快. 快速故障切换可通过以下方式实现: