文档章节

Mesos 实战-3:Marathon 作为运维管理平台

xingfei
 xingfei
发布于 2017/04/25 22:57
字数 1390
阅读 47
收藏 1

  http://blog.liulantao.com/blog/2016/2016-11-11-mesos-series-3-marathon-as-operation-platform.html

 

Marathon 是运行在 Mesos 之上的应用管理平台、运维平台。 本文将学习 Marathon 的基本概念、部署管理和使用方法。

前文中我们已通过 Mesos 实战-1:Mesos 起步 部署一套 Mesos 集群,通过 Mesos 实战-2:Mesos 框架初探 了解 Mesos 框架的基本结构。 在框架的基础上,Marathon 平台的出现使得往 Mesos 上部署应用更加便捷。

本文主要学习内容有:

  • Marathon 安装
    • Marathon UI
  • Marathon API
    • 创建一个 Demo,运行 dstat
  • 运维部署流程讨论

Why Marathon?

我们知道了 Mesos 平台能提供资源调度的功能。

但是具体采用什么样的策略调度,优先级怎么区分,异常情况如何处理,都需要在 Mesos 框架中实现。 实际生产中使用的计算任务,调度需求类型相对比较固定,每个业务需求去都实现一个框架的负担会比较重。 因此需要有一套通用的平来实现这些基本调度需求,又可以大大降低开发和运维工作量。

Marathon 就是这样一套通用型的应用管理框架/平台。

特性

  • 高可用,支持多主节点(主备模式)自动切换
  • 支持多种容器环境
  • 支持有状态服务,如数据库
  • 使用 Web 管理界面用于配置操作和监控系统状态
  • 约束规则,比如限制任务分布在特定节点
  • 服务发现、负载均衡
  • 支持健康检查,实现容错
  • 支持事件订阅,用于集成到其它系统
  • 运行指标监控接口
  • 完善易用的 REST API

安装 Marathon

使用 Mesosphere 的软件仓库安装是比较简单的选择。

yum install -y http://repos.mesosphere.com/el-testing/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm && \
yum update -y && \
yum install -y marathon

# 启动
systemctl start marathon

还可以下载安装包手动安装。 (本文写作时版本为 1.1.1)

$ curl -O http://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz
$ tar xzf marathon-1.1.1.tgz

# 启动
$ ./bin/start --master zk://127.0.0.1:2181/mesos --zk zk://127.0.0.1:2181/marathon

Marathon UI 介绍

默认情况下,Marathon 在 8080 端口上启动了 web 管理界面。

Marathon UI 展示了应用的状态。

创建应用

从最基本的任务开始,创建一个简单的应用,执行 dstat 命令。

应用定义文件

首先,准备应用定义文件。 此文件为 JSON 格式,定义了应用的名称(id)、命令、资源(cpu、内存等)和实例数量等信息。

先来看下这个文件等内容:

{
  "id": "dstat-demo",
  "cmd": "dstat -tapm",
  "cpus": 0.01,
  "mem": 32,
  "instances": 2
}

注意, 其中的 cmd 字段包含了应用将要执行的命令行。 进程的数量 instances 为 2。

通过 Marathon UI 创建应用

在 Web 页面上,点击创建(’Create Application’)按钮。 弹出操作窗中,切换为 JSON 模式(’JSON Mode’)。

将上一步准备的 JSON 内容复制的输入框内。 点击输入框旁的创建(’Create Application’)按钮,保存配置。 此时新建应用的信息,将出现在 Web 页面的应用列表。

伸缩(Scale)

便捷的操作界面,是 Marathon 的一大优势。 让我们体验一下扩容操作,为刚创建的应用分配更多的计算资源。

应用列表中,点击应用最右侧的图标,下拉菜单选择 Scale 。

修改应用实例数量,此时我们由 2 改为 4:

等待几秒钟,在应用列表中可以看到应用实例数量已经更新。 你可以随意修改数量,来体验伸缩的操作。

使用 Marathon API 操作(create/scale)

为了方便批量化管理,以上操作都可以通过 API 来实现。

API 文档可以参考 Marathon REST API documentation

我们使用其中的 POST /v2/apps 来创建应用,用 PUT /v2/apps/{app_id} 来对应用进行操作。 其中, PUT /v2/apps/{app_id} 也可以用来创建应用,仅限该 app_id 还不存在的情况下。

POST /v2/apps

Create and start a new application. Note: This operation will create a deployment. The operation finishes, if the deployment succeeds. You can query the deployments endoint to see the status of the deployment.


PUT /v2/apps/{app_id}

Replaces parameters of a running application. If no application with the given id exists, it will be created. If there is an application with this id, all running instances get upgraded to the new definition.

Note: This operation will create a deployment. The operation finishes, if the deployment succeeds. You can query the deployments endoint to see the status of the deployment.

应用部署流程

使用 Marathon 部署应用时,所有应用应尽量做到无状态(本地不保存数据),配置集中管理(本地不保存配置),支持随时迁移到其它节点(服务发现)。

一个比较理想的流程是:

  1. 创建应用/配置更新
  2. 应用环境变量设置
  3. 安装系统/应用环境依赖
  4. 获取应用配置文件
  5. 获取应用二进制文件
  6. 启动应用进程,服务节点注册
  7. 服务节点注销,下线应用进程

这个流程中,有两个重要组件:CMDB 和 Service Registry。

其中, CMDB 定义应用角色数据,如每个计算资源、进程属于哪组角色;Service Registry 保存服务状态,如每个服务有哪些进程。

关于 CMDB 和 Service Registry 的方案选型,是另一个较大的话题,以后做微服务方面分享时会涉及。

Next

作为运维平台,可用性也是重要的方面。 关于这个话题,Mesos/Marathon 可用性方面所做的工作,后面的文章将详细介绍。

本文转载自:  http://blog.liulantao.com/blog/2016/2016-11-11-mesos-series-3-marathon-as-operation-platform.html

xingfei
粉丝 2
博文 428
码字总数 401593
作品 0
大兴
运维
私信 提问
在CentOS7上配置Marathon+Mesos+Docker实战

配置多台Mesos-master环境 生产环境中ZooKeeper是以宕机个数过半来让整个集群宕机的。所以Mesos-master一般选择奇数个节点来组成集群,随着部署的Master节点增多可靠性也就增强,但多Mesos-m...

何以重见
2018/08/18
0
0
【Docker篇四】Mesos+Zookeeper+Marathon+Docker实战实验

Apache Mesos概述 不同的分布式运算框架(spark,hadoop,ES,MPI,Cassandra,etc.)中的不同任务往往需要的资源(内存,CPU,网络IO等)不同,它们运行在同一个集群中,会相互干扰,为此,应该提供...

Matbe
2018/08/21
0
0
基于Zookeeper+Mesos+Marathon搭建Docker集群管理平台

Mesos概述 Apache Mesos 是一款基于多资源(内存、CPU、磁盘、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易使用。其采用了Master/Slave结构来简化设计,将Master做的尽可能...

小樱桃Cherry
2018/08/24
0
0
数人云|值得掏空身体来听的应用容器化实践Meetup

如果把产品迭代看做里约奥运会, 那么, 开发是四年甚至更长时间的努力付出, 测试是决赛之前的小组预赛进阶, 运维则是冲金的最后一公里! Meetup中,您可以听到—— 微软黎超老师分享微软对...

数人云
2016/08/23
384
0
数人云|值得掏空身体来听的应用容器化实践Meetup

如果把产品迭代看做里约奥运会, 那么, 开发是四年甚至更长时间的努力付出, 测试是决赛之前的小组预赛进阶, 运维则是冲金的最后一公里! Meetup中,您可以听到—— 微软黎超老师分享微软对...

数人云
2016/08/23
4
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部