Marathon 说明文档
一、Marathon 介绍 ........................................................................................................................ 2
二、Marathon 之安装指引篇 ........................................................................................................ 5
三、 Marathon 之应用篇 .............................................................................................................. 7
3.1 基础应用 .......................................................................................................................... 7
3.2 运行远程资源 .................................................................................................................. 9
3.4 容器运行 ........................................................................................................................ 12
3.5 健康检查 ........................................................................................................................ 15
3.6 约束语法 ........................................................................................................................ 17
3.7 应用群组 ........................................................................................................................ 20
3.8 命令行设臵 .................................................................................................................... 22
3.9 应用部署 ........................................................................................................................ 23
3.10 事件总线 ...................................................................................................................... 26
3.11 应用实例 ...................................................................................................................... 28
四、Marathon 之高可用篇 .......................................................................................................... 31
五、Marathon 之 SSL 与基本认证篇 ......................................................................................... 32
5.1 使用 SSL ........................................................................................................................ 32
5.2 生成带有 SSL 密钥的 keystore .................................................................................... 32
5.3 启用基础认证 ................................................................................................................ 34
六、Marathon 之服务发现篇 ...................................................................................................... 35
DNS 相关概念 .......................................................................................... 35
6.1
6.2 Mesos-DNS 介绍 ............................................................................................................ 39
6.3 Mesos-DNS 安装与配臵 .......................................................................................... 44
Mesos-DNS 运行 .......................................................................................... 44
七、Marathon 之负载均衡篇 ...................................................................................................... 47
7.1 Marathon-Bridge and HAProxy ...................................................................................... 47
7.2 Bamboo and HAProxy .................................................................................................... 52
八、 Marathon 之应用迁移篇 .................................................................................................... 57
6.4
Marathon 说明文档
一、Marathon 介绍
中移苏研-邹能人
Marathon 是一个 mesos 框架,能够支持运行长服务,比如 web 应用
等。是集群的分布式 Init.d,能够原样运行任何 Linux 二进制发布版本,
如 Tomcat Play 等等,可以集群的多进程管理,实现服务的发现,为部
署提供提供 REST API 服务,SSL 与基础认证、配臵约束,通过 HAProxy、
DNS 实现服务发现和负载平衡,可定制化监控策略实现 Task(一个 App
对应多个 Task)的自动扩缩,Dcos 架构与操作系统架构对比如图 1.1 所
示。
图 1.1 Dcos 架构与操作系统架构
Mesos 仅仅是适用于集群的管理,这意味着它可以隔离不同的任务
负载。但是仍然需要额外的工具来帮助工程师查看不同系统上运行的工
作负载。不然的话,如果某些工作负载消耗了所有资源,那么重要的工
作负载可能就难以及时地获得资源。
Marathon 是一个“元架构”,它可以让 Mesos 和 Chronos 变得更好用,
随着 Mesos 一起运行,并且在运行工作负载的同时提供了更高的可用
性,让用户可以添加资源以及自动的故障转移,如图 1.2 所示。
图 1.2 Chronos 与 marathon
不像 Chronos 在 Mesos 之上调度作业,Marathon 让 Chronos 在 Mesos
的内部进行运行,通过这种方式,Chronos 也变成 Marathon 所管理的一
项工作。Chronos 的优势在于处理和调度 Hadoop 作业和其他短期的任
务,而 Marathon 则可以直接管理 Chronos 和那些长期运行的 Web 服务。
Marathon 甚至可以运行多个实例。
图 1.3 集群运行三个不同的应用
图 1.4 某一节点失联
从更广的层面而言,像 Marathon 这样的项目将来可能会在 SDN(软
件定义的网络)、存储,甚至是 DCOS(数据中心操作系统)有更大的
作为。
二、Marathon 之安装指引篇
安装需求:
Apache Mesos 0.24.0+
Apache ZooKeeper
JDK
测试环境
1.6+
节点
10.133.19.25
10.134.29.141
10.134.29.136
10.134.29.135
10.134.29.134
10.134.29.133
10.134.29.132
10.134.29.144
10.134.29.129
安装过程
①、安装 Mesos
角色
docker 私有镜像库
dcos 集群部 署 workstation
mesos-master、zookeeper
mesos-master、zookeeper
mesos-master、zookeeper、UI
mesos-slave
mesos-slave
mesos-slave
mesos-slave
简单的方法是通过系统的包管理来安装,当然也可以使用源码安装
mesos,具体可以参考 Mesos 官网。
②、安装 Marathon
通过 Package Manager,Marathon 可以从软件仓库中下载。
$ curl -O
http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz
$ tar xzf marathon-0.15.2.tgz
③、生产环境下运行
生产环境下启动 Marathon,需要 ZooKeeper 和 Mesos 同时运行,下面
的命令将会在生产环境中启动 Marathon,将你的 web 浏览器的 localhost
设为 8080,将会看到 Marathon 的界面。
$
10.134.29.135:2181,10.134.29.136:2181/mesos
--zk
zk://10.134.29.134:2181,10.134.29.135:2181,10.134.29.136:2181/marathon
Marathon 使用--master 参数去发现 Mesos 的 master 节点,使用--zk 发现
ZooKeeper,因为两者之间相对独立,所以 Mesos master 节点也使用其
他方式来发现,比如 etcd 等。
--master zk://10.134.29.134:2181
./bin/start
对于 marathon 所有的参数设臵选项,请查看 marathon 之命令行篇。
对于 Marathon 更多的高可用特性,请查阅 marathon 之高可用篇。
④、Mesos Library
MESOS_NATIVE_JAVA_LIBRARY:通过 bin/start 可以找到通常的安装路
径, /usr/lib 和/usr/local/lib,如果你为链接库设臵了其他路
径,MESOS_NATIVE_JAVA_LIBRAR 需要设臵为其它环境变量,设臵如
下。
$MESOS_NATIVE_JAVA_LIBRARY=/Users/bob/libmesos.dylib ./bin/start
--maste
10.134.29.135:2181,10.134.29.136:2181/mesos
--zk
zk://10.134.29.134:2181
10.134.29.135:2181,10.134.29.136:2181/marathon
zk://10.134.29.134:2181
启动应用
Marathon 应用的介绍以及如何执行,请查阅 Marathon 之应用篇。
,
三、Marathon 之应用篇
3.1 基础应用
将下述代码,保存为 shell.json:
{
"id": "shell",
"cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
"cpus": 0.1,
"mem": 10.0,
"instances": 1
}
执行下述命令行:
curl http://10.134.29.134/v2/apps
application/json"
其将 json 文件通过 marathon api /v2/apps 传递给 marathon 调度器,请求
创建一个实例,资源需求为 0.1cpu、10M 内存,执行 shell 命令行。cmd
将被发送给 Mesos 底层执行器进行执行,通过/bin/bash -c ${cmd}。
打开 dcos 控制台,跳转到 marathon 管理界面,如图 3-1 所示,可以看
到名为 shell 的 App 正在运行,App 在 marathon 框架中被定义为长服务,
一对多的关系,即为一个 App 可以有多个 task。
-H "Content-type:
-d @shell.json
对图 3-1,可以发现 marathon 提供 app 的自动扩展,健康检查以及运行
图 3-1
情况的健康,日志管理等功能。
marathon 对 app 的生命周期进行有效的管理,首先介绍其自动扩缩功能,
选择 Scale Application 进行快速扩容,在如图 3-2 中填上 10,即可扩展
到 10 个实例。
如下图 3-3 所示,shell app 扩展到 10 个实例。
图 3-2
图 3-3
既然可以扩展,当然也可以销毁,选择你所需销毁的 task,点击 kill &
scale 即可,如果点击 kill,marathon 将会继续创建 task 至 10 个为止。
使用 ps 命令查看 shell 所在节点的进程 ID,使用 lsof 查看该进行打开的
文件,结果如图 3-4 所示。