首页 > 云计算 > 容器服务 > DCOS云平台之mesos分布式资源管理组件
可以从上图看出,Mesos 采用了经典的主-从(master-slave)架构,其中主节点(管理节点)可以使用 zookeeper 来做 HA。Mesosmaster 服务将运行在主节点上,Mesos slave 服务则需要运行在各个计算任务节点上。负责完成具体任务的应用框架们,跟 Mesos master 进行交互,来申请资源。
Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。Framework包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。Mesos能和不同类型的Framework通信,每种Framework由相应的应用集群管理。上图中只展示了Hadoop和MPI两种类型,其它类型的应用程序也有相应的Framework。Mesos Master协调全部的Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。Framework可以根据应用程序的需求,选择接受或拒绝来自master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上任务,并在容器中执行,以使多种类型的任务,可以在同一个节点上同时运行。
支持多种应用框架,包括 Marathon、Singularity、Aurora 等;
多级资源调度(针对内存与CPU) ;
通过Zookeeper提供容错机制;
轻松扩容到1万台节点服务器;
支持 Docker、LXC 等容器机制进行任务隔离;
提供了多个流行语言的 API接口,包括 Python、Go、Java、C++ 等;
自带了简洁易用的 WebUI,方便用户直接进行操作;
横跨虚拟机、裸机多种方式部署。
5 Mesos适用场景
容器应用编排管理平台
CI/CD测试平台
运维管理平台
1 、MESOS日志排查
Mesos组件对于DCOS云平台来说是一个非常重要的核心组件。虽然Mesos组件故障时不会影响业务容器,但是会影响到DCOS平台去做资源调度与容器应用发布,甚至影响到容器扩缩容问题。Mesos自身提供了强大的日志输出, 默认日志文件 路径:/var/log/mesos。
mesos.master日志:用于查看集群中主机资源的总汇聚情况;
mesos.slave日志:用于专注和Master有没有中断连接;
2 、MESOS监控指标
指标 |
具体含义 |
mesos.cluster.cpus_percent |
分配的 CPU 的百分比 |
mesos.cluster.disk_percent |
分配的磁盘空间百分比 |
mesos.cluster.dropped_messages |
丢弃的消息数量 |
mesos.cluster.event queuedispatches |
事件队列里调度的数量 |
mesos.cluster.event queuehttp_requests |
事件队列里HTTP请求的数量 |
mesos.cluster.event queuemessages |
事件队列里消息传输的数量 |
mesos.cluster.frameworks_active |
活跃的应用框架数量 |
mesos.cluster.frameworks_connected |
已经连接的应用框架数量 |
mesos.cluster.frameworks_disconnected |
未连接的应用框架数量 |
mesos.cluster.frameworks_inactive |
非活动的应用框架数量 |
mesos.cluster.mem_percent |
分配的内存百分比 |
mesos.cluster.outstanding_offers |
未处理的资源邀约数量 |
mesos.cluster.slaves_active |
活动的slave节点数量 |
mesos.cluster.slaves_connected |
连接中的slave节点数量 |
mesos.cluster.slaves_disconnected |
未连接的slave节点数量 |
mesos.cluster.slaves_inactive |
非活动中的slave节点数量 |
mesos.cluster.tasks_error |
已经失效的任务数量 |
mesos.cluster.tasks_failed |
失败的任务数量 |
mesos.cluster.tasks_finished |
已经完成的任务数量 |
mesos.cluster.tasks_killed |
被杀死的任务数量 |
mesos.cluster.tasks_lost |
丢失的任务数量 |
mesos.cluster.tasks_running |
运行中的任务数量 |
mesos.cluster.tasks_staging |
待处理任务数量 |
mesos.cluster.tasks_starting |
开始的任务数量 |
mesos.cluster.total_frameworks |
总的应用框架数量 |
mesos.cluster.valid statusupdates |
无效的状态更新的数量 |
mesos.registrar.registry sizebytes |
注册表大小 |
mesos.registrar.state fetchms |
读注册信息的延迟,单位毫秒:ms |
mesos.registrar.state storems |
写注册信息的延迟,单位毫秒:ms |
mesos.registrar.state storems.count |
注册表写入次数 |
mesos.registrar.state storems.max |
最大写注册信息的延迟,单位毫秒:ms |
mesos.registrar.state storems.min |
最小写注册信息的延迟,单位毫秒:ms |
mesos.registrar.state storems.p50 |
写注册信息延迟的中位数,单位毫秒:ms |
mesos.registrar.state storems.p90 |
写注册信息90%起的延迟,单位毫秒:ms |
mesos.registrar.state storems.p95 |
写注册信息95%起的延迟,单位毫秒:ms |
mesos.registrar.state storems.p99 |
写注册信息99%起的延迟,单位毫秒:ms |
mesos.registrar.state storems.p999 |
写注册信息99.9%起的延迟,单位毫秒:ms |
mesos.registrar.state storems.p9999 |
写注册信息99.99%起的延迟,单位毫秒:ms |
mesos.slave.cpus_percent |
已分配的cpu比例 |
mesos.slave.disk_percent |
已分配的磁盘空间比例 |
mesos.slave.executors_registering |
注册中的执行器数 |
mesos.slave.executors_running |
运行中的执行器数 |
mesos.slave.executors_terminated |
已终止的执行器数 |
mesos.slave.executors_terminating |
正在终止的执行器数 |
mesos.slave.frameworks_active |
活动中的应用数 |
mesos.slave.mem_percent |
内存分配百分比 |
mesos.slave.recovery_errors |
恢复过程中的错误数 |
mesos.slave.tasks_failed |
失败的任务数量 |
mesos.slave.tasks_finished |
已经完成的任务数量 |
mesos.slave.tasks_killed |
被杀死的任务数量 |
mesos.slave.tasks_lost |
丢失的任务数量 |
mesos.slave.tasks_running |
运行中的任务数量 |
mesos.slave.tasks_staging |
等待运行的任务数量 |
mesos.slave.tasks_starting |
开始的任务数量 |
mesos.stats.elected |
是否被选为主节点 |
mesos.stats.system.load_15min |
15分钟内平均负载 |
mesos.stats.system.load_1min |
1分钟内平均负载 |
mesos.stats.system.load_5min |
5分钟内平均负载 |
mesos.stats.system.mem freebytes |
剩余内存 (bytes) |
mesos.stats.uptime_secs |
从节点运行时间 |
DCOS云平台是通过mesos api接口来调度和管理主机资源,目前DCOS平台调用到mesos api两个接口,用来获取计算节点资源和mesos组件健康状态。
1 、获取计算节点资源
API接口:
对应DCOS平台下面计算节点资源
2 、Mesos组件健康状态
Mesos master组件状态
API接口:
Mesos Slave组件状态
API接口:
对应DCOS平台下面的mesos主从节点健康状态
3 、其它API接口
根据对适合构建DCOS的各种技术架构的评估来看,选择以Mesos为基础的方案。其优势是它的 成熟度高、两级调度框架、适合多种应用场景、混合部署、应用与平台耦合度低。
|
Mesos |
Yarn |
K8S |
调度级别 |
二级调度(Dominant Resource Fairness) |
二级调度(FIFO,Capacity Scheduler,Fair Scheduler) |
二级调度(基于Predicates和Priorities两阶段算法) |
生态活跃 |
活跃 |
活跃 |
非常活跃 |
适用场景 |
通用性高,混合场景 |
大数据生态场景 |
目前较单一 |
成熟度 |
高 |
高 |
中 |
应用与平台耦合度 |
低 |
低 |
中 |
应用案例分析 |
Twitter、Apple、Airbnb、Yelp、Netflix、ebay、Verizon |
Hadoop生态圈应用 |
目前快速发展中,生产环境应用较少 |
通过我们DCOS平台对mesos组件的使用总结如下几点:
1、Mesos组件提供支持自动弹性伸缩机制;
2、能够最大化提升服务器资源利用率;
3、它能够适用于企业大规模生产环境,实现百万并发量;
4、关于OpenAPI提供更加快速接入第三方服务无缝交互;
5、MESOS相比K8S软件成熟度高,并有更多的第三方成熟案例供参考使用;
6、由于去年k8s产品崛起,其功能得到加强与完善,大部企业开始拥抱k8s, mesos慢慢会被其过渡掉。
有需要的朋友可以关注我的公众号,文章每日一更
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2723066/,如需转载,请注明出处,否则将追究法律责任。