ITPub博客

首页 > 云计算 > 容器服务 > DCOS云平台之mesos分布式资源管理组件

DCOS云平台之mesos分布式资源管理组件

原创 容器服务 作者:jaymarco 时间:2020-09-22 10:43:36 0 删除 编辑

1    前言

     2017 年,我们开发了一套DCOS云平台管理,它是采用mesos+marathon开源容器应用编排框架作为底层组件。DCOS云平台产品并在XX金融公司上线使用,它搭建了以Docker容器为基础封装各类应用和运行环境,以Mesos、Marathon为核心实现容器资源的分布式调度与协调,并以Haproxy、Etcd实现服务注册和业务的引流。其中,Marathon作为DCOS云平台的核心组件,并结合MESOS的资源调度组件,实现DCOS云平台下任务的动态调度,保证应用服务长时间稳定运行。接下的主题是分享MESOS这一核心组件原理与实践。


2   Mesos简介

     Mesos  最初由 UC Berkeley 的 AMP 实验室于 2009 年发起,遵循 Apache 协议,目前已经成立了 Mesosphere 公司进行运营。Mesos 可以将整个数据中心的资源(包括 CPU、内存、存储、网络等)进行抽象和调度,使得多个应用同时运行在集群中分享资源,并无需关心资源的物理分布情况。它能够在同样的集群机器上运行多种分布式系统类型,更加动态、有效率、低共享资源。提供失败侦测,任务发布,任务跟踪,任务监控,低层次资源管理和细粒度的资源共享,可以扩展伸缩到数千个节点。如果把数据中心中的集群资源看做一台服务器,那么 Mesos 要做的事情,其实就是今天操作系统内核的职责:抽象资源 + 调度任务。Mesos 项目是 Mesosphere 公司 Datacenter Operating System (DCOS) 产品的核心部件。


3   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,调度参与节点上任务,并在容器中执行,以使多种类型的任务,可以在同一个节点上同时运行。

4    Mesos特点

  •  支持多种应用框架,包括 Marathon、Singularity、Aurora 等;

  • 多级资源调度(针对内存与CPU)

  • 通过Zookeeper提供容错机制;

  • 轻松扩容到1万台节点服务器;

  • 支持 Docker、LXC 等容器机制进行任务隔离;

  • 提供了多个流行语言的 API接口,包括 Python、Go、Java、C++ 等;

  • 自带了简洁易用的 WebUI,方便用户直接进行操作;

  • 横跨虚拟机、裸机多种方式部署。

5   Mesos适用场景

  • 大数据技术平台

  • 容器应用编排管理平台

  • CI/CD测试平台

  • 运维管理平台

6   Mesos日志与监控

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

从节点运行时间

7    MESOS API接口

DCOS云平台是通过mesos api接口来调度和管理主机资源,目前DCOS平台调用到mesos api两个接口,用来获取计算节点资源和mesos组件健康状态。

 

1 、获取计算节点资源

API接口:


对应DCOS平台下面计算节点资源


2 、Mesos组件健康状态

Mesos master组件状态

API接口:


Mesos Slave组件状态

API接口:

 

对应DCOS平台下面的mesos主从节点健康状态


 

3 、其它API接口


8    MESOS优势在哪里,我们为什么选择它

根据对适合构建DCOS的各种技术架构的评估来看,选择以Mesos为基础的方案。其优势是它的 成熟度高、两级调度框架、适合多种应用场景、混合部署、应用与平台耦合度低


Mesos

Yarn

K8S

调度级别

二级调度(Dominant Resource Fairness)

二级调度(FIFO,Capacity Scheduler,Fair Scheduler)

二级调度(基于Predicates和Priorities两阶段算法)

生态活跃

活跃

活跃

非常活跃

适用场景

通用性高,混合场景

大数据生态场景

目前较单一

成熟度

应用与平台耦合度

应用案例分析

Twitter、Apple、Airbnb、Yelp、Netflix、ebay、Verizon

Hadoop生态圈应用

目前快速发展中,生产环境应用较少

9    总结

通过我们DCOS平台对mesos组件的使用总结如下几点:

1、Mesos组件提供支持自动弹性伸缩机制;

2、能够最大化提升服务器资源利用率;

3、它能够适用于企业大规模生产环境,实现百万并发量;

4、关于OpenAPI提供更加快速接入第三方服务无缝交互;

5、MESOS相比K8S软件成熟度高,并有更多的第三方成熟案例供参考使用;

6、由于去年k8s产品崛起,其功能得到加强与完善,大部企业开始拥抱k8s, mesos慢慢会被其过渡掉。


有需要的朋友可以关注我的公众号,文章每日一更


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2723066/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    76
  • 访问量
    42990