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

1、前言

2017年,公司开发了一套DCOS云平台管理,它是采用mesos+marathon开源容器应用编排框架作为底层组件。DCOS云平台产品并在中经汇通公司上线使用,它搭建了以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。Mesos master 服务将运行在主节点上,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.eventqueuedispatches事件队列里调度的数量

mesos.cluster.eventqueuehttp_requests事件队列里HTTP请求的数量

mesos.cluster.eventqueuemessages事件队列里消息传输的数量

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.validstatusupdates无效的状态更新的数量

mesos.registrar.registrysizebytes注册表大小

mesos.registrar.statefetchms读注册信息的延迟,单位毫秒:ms

mesos.registrar.statestorems写注册信息的延迟,单位毫秒:ms

mesos.registrar.statestorems.count注册表写入次数

mesos.registrar.statestorems.max最大写注册信息的延迟,单位毫秒:ms

mesos.registrar.statestorems.min最小写注册信息的延迟,单位毫秒:ms

mesos.registrar.statestorems.p50写注册信息延迟的中位数,单位毫秒:ms

mesos.registrar.statestorems.p90写注册信息90%起的延迟,单位毫秒:ms

mesos.registrar.statestorems.p95写注册信息95%起的延迟,单位毫秒:ms

mesos.registrar.statestorems.p99写注册信息99%起的延迟,单位毫秒:ms

mesos.registrar.statestorems.p999写注册信息99.9%起的延迟,单位毫秒:ms

mesos.registrar.statestorems.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_15min15分钟内平均负载

mesos.stats.system.load_1min1分钟内平均负载

mesos.stats.system.load_5min5分钟内平均负载

mesos.stats.system.memfreebytes剩余内存 (bytes)

mesos.stats.uptime_secs从节点运行时间

7、MESOS API接口

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

1、获取计算节点资源

API接口:http://mesos-master-ip:5050/master/slaves

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

2、Mesos组件健康状态

Mesos master组件状态

API接口:http://mesos-master-ip:5050/metrics/snapshot

Mesos Slave组件状态

API接口:http://mesos-slave-ip:5051/metrics/snapshot

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

3、其它API接口

https://github.com/apache/mesos/blob/master/docs/api-client-libraries.md

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容