什么是中间层
Mesosphere 是一种软件解决方案,它通过附加组件扩展了 Apache Mesos 的集群管理功能,以提供一种全新的方式来管理服务器基础架构。 通过将多个组件与 Mesos 相结合,例如 Marathon 和 Chronos,Mesosphere 能够通过抽象出与扩展相关的许多挑战来轻松扩展应用程序。
Mesosphere 提供了应用程序调度、扩展、容错和自我修复等功能。 它还提供应用服务发现、端口统一和端点弹性。
为了更好地了解 Mesosphere 如何提供上述功能,我们将简要解释 Mesosphere 的每个关键组件的作用,从 Apache Mesos 开始,并展示每个组件如何在 Mesosphere 的上下文中使用。
Apache Mesos 的基本概述
Apache Mesos 是一个开源集群管理器,可简化在可扩展服务器集群上运行的应用程序,它是 Mesosphere 系统的核心。
Mesos 提供了许多集群管理器所期望的特性,例如:
- 可扩展到超过 10,000 个节点
- 通过 Linux 容器对任务进行资源隔离
- 高效的 CPU 和内存感知资源调度
- 通过 Apache ZooKeeper 实现高可用的 master
- 用于监控集群状态的 Web UI
Mesos 架构
Mesos 的架构由主从守护进程和框架组成。 以下是这些组件和一些相关术语的快速细分:
- Master daemon:运行在master节点上,管理slave daemon
- Slave daemon:在主节点上运行,运行属于框架的任务
- Framework:也称为Mesos应用,由一个scheduler向master注册接收资源offers和一个或多个组成executors,它在 slave 上启动 tasks。 Mesos 框架的示例包括 Marathon、Chronos 和 Hadoop
- Offer:从节点的可用CPU和内存资源列表。 所有从节点向主节点发送报价,主节点向注册的框架提供报价
- Task:由框架调度的工作单元,在从节点上执行。 任务可以是任何东西,从 bash 命令或脚本,到 SQL 查询,再到 Hadoop 作业
- Apache ZooKeeper:用于协调主节点的软件
注: “ZK”在此图中代表 ZooKeeper。
这种架构允许 Mesos 在应用程序之间以高粒度共享集群资源。 提供给特定框架的资源量基于主服务器上设置的策略,并且框架调度程序决定使用哪些提议。 一旦框架调度器决定了它想使用哪个提议,它就会告诉 Mesos 应该执行哪些任务,然后 Mesos 在适当的从属服务器上启动这些任务。 任务完成并释放消耗的资源后,资源提供周期会重复,以便可以安排更多任务。
高可用性
通过使用 Apache ZooKeeper 复制 master 以形成 quorum,可以实现集群中 Mesos master 的高可用性。 ZooKeeper 还协调主领导人选举并处理 Mesos 组件之间的领导人检测,包括从属和框架。
高可用性配置至少需要三个主节点——三个主节点设置允许在单个主节点发生故障的情况下维持仲裁——但建议五个主节点用于弹性生产环境,允许通过以下方式维护仲裁两个主节点离线。
有关 Apache Mesos 的更多信息,请访问 其官方文档页面 。
马拉松基本概况
Marathon 是 Mesos 的一个框架,旨在启动长期运行的应用程序,并且在 Mesosphere 中,可以替代传统的 init
系统。 它具有许多可简化集群环境中运行应用程序的功能,例如高可用性、节点约束、应用程序健康检查、用于脚本化和服务发现的 API 以及易于使用的 Web 用户界面。 它将缩放和自我修复功能添加到 Mesosphere 功能集中。
Marathon 可用于启动其他 Mesos 框架,它还可以启动任何可以在常规 shell 中启动的进程。 由于它是为长时间运行的应用程序设计的,因此它将确保它启动的应用程序将继续运行,即使它们运行的从节点出现故障也是如此。
有关 Marathon 的更多信息,请访问 其 GitHub 页面 。
Chronos 的基本概述
Chronos 是 Mesos 框架,最初由 Airbnb 开发,用于替代 cron
。 因此,它是用于 Mesos 的全功能、分布式和容错调度程序,它简化了作业的编排,作业是任务的集合。 它包括一个允许编写调度作业脚本的 API,以及一个易于使用的 Web UI。
在 Mesosphere 中,Chronos 与 Marathon 相得益彰,因为它提供了另一种根据时间表或其他条件(例如完成另一项工作)运行应用程序的方式。 它还能够在多个 Mesos 从节点上调度作业,并提供有关作业失败和成功的统计信息。
有关 Chronos 的更多信息,请访问 其 GitHub 页面 。
HAProxy 的基本概述
HAProxy 是一种流行的开源负载均衡器和反向代理解决方案。 它可以在 Mesosphere 中用于将网络流量从已知主机(通常是 Mesos 主节点)路由到在 Mesos 从节点上运行的实际服务。 Mesos 的服务发现功能可用于动态配置 HAProxy 以将传入流量路由到正确的后端从节点。
有关 HAProxy 的一般功能的更多信息,请查看我们的 HAProxy 简介。
结论
Mesosphere 采用了可能看起来不熟悉的服务器基础架构范例,因为它的设计重点是集群和可伸缩性,但希望您现在对它的工作原理有一个很好的理解。 它所基于的每个组件都为处理集群和扩展服务器基础架构时通常面临的问题提供了解决方案,Mesosphere 旨在为这些需求提供完整的解决方案。
现在您已经了解了 Mesosphere 的基础知识,请查看本系列的下一个教程。 它将教您 如何在 Ubuntu 14.04 上设置生产就绪的 Mesosphere 集群!