分布式进程管理

了解 DC/OS 群集中的分布式进程管理

本节介绍 DC/OS 群集中的进程管理,从资源的分配到进程的执行。在高级别上,启动一个进程时,DC/OS 组件之间会发生这种相互作用。通信发生在不同层之间(例如,与调度程序交互的用户)以及层内(例如,与代节点通信的主节点)。

图 1 - DC/OS 中的分布式进程管理

以下是使用 Marathon 服务和用户根据 Docker 镜像启动容器的示例:

DC/OS 中分布式进程管理的示例

图 2 - DC/OS 中使用 Marathon 和 Docker 的分布式进程管理

上述组件之间按时间顺序相互作用与此相似。请注意,执行器和任务被折叠到一个区块,因为在实践中,情况往往如此:

DC/OS 中分布式进程管理的序列图

图 3 - DC/OS 中分布式进程管理的顺序

详细来说,这些步骤如下:

  1. 客户端/调度器初始化。在此步骤,客户端需要了解如何连接到调度器以启动一个进程,例如通过 Mesos-DNS 或 DC/OS CLI。
  2. Mesos 管理节点将资源邀约发送给调度器,资源邀约是基于通过 Mesos 管理节点中的代理和 DRF 算法来管理的群集资源。
  3. 调度器拒绝资源邀约,因为客户端没有待处理的进程请求。只要没有客户端还有发起进程,调度器就会拒绝来自管理节点的邀约。
  4. 客户发起进程启动。例如,这可以是用户利用 DC/OS 服务标签或通过 HTTP 端点来创建 Marathon 应用程序/v2/app
  5. Mesos 管理节点发送资源邀约。例如, cpus(*):1; mem(*):128; ports(*):[21452-21452]
  6. 如果资源邀约符合调度器对进程的要求,它将接受邀约并向 Mesos 管理节点发送 launchTask 请求。
  7. Mesos 管理节点指示 Mesos 代理节点启动任务。
  8. Mesos 代理节点通过执行器启动任务。
  9. 执行器向 Mesos 代理节点报告任务状态。
  10. Mesos 代理节点向 Mesos 管理节点报告任务状态。
  11. Mesos 管理节点向调度器报告任务状态。
  12. 调度器向客户端报告进程状态。