mesos agent 在升级完成后,将会 start mesos agent service, 会打印出一些 (flags, resources, attributes, hostname etc), 然后从目录 /data/mesos/meta
中恢复 mesos agent 状态。与此同时,Group 进程会连接到 ZooKeeper 上,并同步一些 group 操作(比如:joins, cancels, datas 的队列大小等)。然后采用消息摘要算法完成与 ZooKeeper 的认证。
之后,开始恢复运行在其上的框架(frameworks ) 信息。先恢复框架的 executors ,(与此同时,垃圾回收会启动定时任务(比如在多少天之后回收)以回收该 executor 的资源,这个部分可能会执行。)
即 recovering executors -> recovering Docker containers -> Recovering containerizer -> provisioner recovery complete .
恢复 docker container 原理是:会将之前的 container 信息 (container id, slaveId, container state, executorcontainer, pid etc ) 先保留下来, 以创建一个新 container 的方式复制保存。
之后把之前的老的 container 销毁。销毁的顺序是: 先让该container 中的 executor 退出,然后 destroy container.
这时,group 会在 zookeeper 中创建一个数据存储的目录。detector 会侦测 leading master
在 slave 这边,slave 开始从 checkpoint 恢复,同时会回调 container termination 操作,如果设置了重连接 flag, 则会发送重连接 executor 请求 。
slave 将 framework 的 task 状态更新成 TASK_FAILED
,并更新该 task 对应的 container resources 信息。
status_update_manager.cpp
会接收 TASK_FAILED
的状态更新并更新检查点
如果该 slave 正处在 RECOVERING 状态,slave 会丢弃 TASK_FAILED
状态更新。
最后,slave 会清除所有未重新注册的 executors 。此时,mesos agent 完成 recovery 操作了。
status_update_manager.cpp
会 Resuming sending status updates, 并发送两次 Resending status update TASK_FAILED
给 slave 。然后 slave.cpp 会将该 task 的 TASK_FAILED 状态 forward 给 mesos master .
之后,status_update_manager.cpp
会收到 Received status update acknowledgement
并且会 Checkpointing ACK for status update TASK_FAILED
由于 TASK_FAILED
,此时 slave 会清掉该 task 对应的 executor。gc.cpp
也开始对该 task 的资源进行垃圾回收。
因此,最后在该 agent 上跑的 task 的 executor 都会被清除并将所有的资源回收,该 task 的 FAILED 的状态会由 该 agent 汇报给 master ,所以 该失败 task 如果不在当前 agent 上重新注册执行就会在另外一个 agent 上重新执行。。。
如果是在当前 agent 上执行,则 slave 会接收到该任务,并加入到 queue 队列并准备执行, docker 会为其准备启动 container 并检查 checkpoint , systemd 会分配一个 pid 给 mesos_executors.slice
。slave 此时,会得到 executors 重新注册的消息,并将在队列中的 task 发给那个 executor , 并更新成 TASK_RUNNING 状态,slave 也会将该状态转发给 master , 此时 task 恢复执行了。
http://blog.csdn.net/yeasy/article/details/46683297
http://blog.csdn.net/qianggezhishen/article/details/51783705
相关推荐
### Mesos运行测试结果分析 #### 一、测试概述与目的 本次测试旨在评估Mesos在不同场景下的表现,特别是其资源管理和任务调度能力。通过对比MonteCarloArea算法在不同环境中的运行效率,我们可以更深入地了解Mesos...
6. **Mesos框架开发**:书中会详细介绍如何开发自定义的Mesos框架,这对于那些希望构建与Mesos兼容的应用和服务的开发者来说至关重要。 7. **Mesos容错机制**:Mesos设计时考虑到了高可用性,即使在部分节点故障的...
在Mesos架构中,有三个主要组件:Mesos Master、Slave(在较新的版本中称为Agent)和框架。Master节点负责管理整个集群的资源分配,Slave节点则运行在每个服务器上,汇报其可用资源,并根据Master的指示执行任务。...
详细介绍了如何查看和分析Mesos的日志文件,以及如何利用调试工具来诊断和解决问题。这对于运维人员来说是非常实用的内容。 **第6章:Mesos在生产环境中的应用** 这一章节重点讨论了如何将Mesos应用于真实的生产...
4. **任务查询**:通过命令,用户可以快速查询任务的状态、日志和详细信息,便于故障排查和性能分析。 5. **集群配置**:CLI还支持修改Mesos集群的配置,如调整资源配额、设置调度策略等。 6. **日志查看**:提供...
Mesos 是一个强大的资源共享平台,设计用于在数据中心实现细粒度的资源共享,特别是针对多样化的集群计算框架,如 Hadoop 和 MPI。该平台的主要目标是提高集群的使用效率,避免因每个框架需要单独的数据复制而导致的...
本文将介绍多个在Mesos上进行复杂数据分析的框架。我们会介绍如何在Mesos上搭建Storm和SparkStreaming来处理实时数据流,以及如何在Mesos上运行NoSQL数据库Canssandra。大数据的爆炸式增长不仅体现在生产的数据量上...
vagrant-mesos 是一款运维工具,可以使 Mesos 集群的安装和运行更加容易。vagrant-mesos 支持 Mesos 0.21.0 集群,同时包括 Marathon (0.8.0) 和 Chronos (2.1.0)正在运行的框架服务器节点。这意味着,你可以使用 ...
根据提供的文件信息,本文将介绍Apache Mesos的核心概念和知识点。Mesos是一种分布式系统内核,由加州大学伯克利分校的AMP实验室开发,之后成为Apache开源项目。 首先,Mesos中文手册的目的是提供一个知识共享平台...
【标题】:“mesos系列文章”指的是一组与Mesos相关的技术文章,Mesos是Apache软件基金会的一个开源项目,它提供了一个分布式系统的资源抽象层,使得在大规模集群上运行各种分布式应用和服务变得简单。这一系列文章...
从Mesos到Kubernetes
Set up Mesos on different operating systems Use the Marathon and Chronos frameworks to manage multiple applications Work with Mesos and Docker Integrate Mesos with Spark and other big data frameworks ...
ceph-mesos, 用于扩展Ceph集群的Mesos框架 在 Apache Mesos上的使用 Docker 来扩展Ceph集群的Mesos框架。 它旨在成为一个快速而可靠的解决方案。目前,它只能:启动 1,3 osd,1 radosgw 。 基于的接受 RESTful ...
Mesos 中文文档是最初由数人科技几名员工在业余时间发起并维护的,目的是提供一个围绕 Mesos 的理论+实践的知识共享平台,做到人人贡献、人人受益。我们会搜罗翻译 Mesos 及其周边组件的介绍,知识分享,使用说明...
### Mesos:为软件定义数据中心而生的操作系统 #### 一、Mesos简介与背景 Mesos是一款由Apache基金会支持的开源分布式资源管理框架,被誉为分布式系统的“内核”。其初衷在于解决大型数据中心中资源的有效管理和...
Mesos Agent同样可以进行故障转移,并且能够定期向Master汇报状态信息。 在开发方面,本书将引导开发者如何使用Mesos的API进行应用程序的构建。它将涉及如何编写Mesos框架,以及如何利用Mesos提供的调度器接口来...
1. **Mesos架构**:Mesos由三个主要组件组成:Mesos Master、Mesos Agent和框架。Master负责资源分配,Agent在每个节点上运行并报告资源,而框架则包含用户的应用程序。 2. **资源隔离与调度**:Mesos提供了基于...