logo资料库

dcos之marathon技术文档.pdf

第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
资料共57页,剩余部分请下载后查看
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 所示。
分享到:
收藏