marathon参考(1)应用基础
2016-04-02 17:16
363 查看
翻译https://mesosphere.github.io/marathon/docs/application-basics.html
在marathon中,应用是一个完整的概念。每个应用是一个典型的长运行的服务,这个服务有很多实例,并且是运行在多个主机上。
注意:cmd是我们要执行的命令。它的值会以/bin/sh -c ${cmd}的方式执行。
mesos执行在它自己的沙箱环境执行所有的任务。这个沙箱在每个slave节点上是一个指定的目录,其中包含很多相关的日志文件。
我们先看一个实例:
在执行cmd之前,先下载https://example.com/app/cool-script.sh这个资源,并且在应用的任务沙箱中让它可用。进入mesos UI,点击进入这个应用运行mesos节点的沙箱,你应该可以找到cool-script.sh这个文件。
注意mesos v0.22及以上版本,默认是不能编译下载的可执行文件的,所以cmd应该修改为:
marathon也可以获取驻留在压缩包中的文件。marathon在执行cmd文件之前,执行解压压缩包的操作,支持压缩包给格式为:
下面是压缩包的实例:
marathon还可以下载git仓库或是cdn的资源,实例如下:
marathon还支持下载其他很多资源,支持URI的协议如下:
下面的实例中,我们注重看一个docker应用:一个使用python编写的web服务,它使用python:3镜像。容器内部,这个web服务运行在8080端口(这个端口号使用containerPort定义)。容器的外部,marathon分配任意个接口(hostPort设置为0)。
在这个例子里,我们将使用HTTP API部署basic-3应用。
我们可以在marathon ui界面查看随机分配的访问端口访问应用。
在marathon中,应用是一个完整的概念。每个应用是一个典型的长运行的服务,这个服务有很多实例,并且是运行在多个主机上。
Hello Marathon:一个内嵌的shell脚步
让我们开始一个简单的例子:编写一个app,打印Hello Marathon到stdout,然后sleep 5秒,周而复始。你可以使用下面的应用定义文件(json格式)来描述应用:{ "id": "basic-0", "cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done", "cpus": 0.1, "mem": 10.0, "instances": 1 }
注意:cmd是我们要执行的命令。它的值会以/bin/sh -c ${cmd}的方式执行。
mesos执行在它自己的沙箱环境执行所有的任务。这个沙箱在每个slave节点上是一个指定的目录,其中包含很多相关的日志文件。
在应用中使用资源
通常应用逗号依赖一些资源集。例如文件和压缩文件等。为了解决资源集的问题,marathon有uris的概念。它利用mesos抓取外部资源。我们先看一个实例:
{ "id": "basic-1", "cmd": "./cool-script.sh", "cpus": 0.1, "mem": 10.0, "instances": 1, "uris": [ "https://example.com/app/cool-script.sh" ] }
在执行cmd之前,先下载https://example.com/app/cool-script.sh这个资源,并且在应用的任务沙箱中让它可用。进入mesos UI,点击进入这个应用运行mesos节点的沙箱,你应该可以找到cool-script.sh这个文件。
注意mesos v0.22及以上版本,默认是不能编译下载的可执行文件的,所以cmd应该修改为:
chmod u+x cool-script.sh && ./cool-script.sh
marathon也可以获取驻留在压缩包中的文件。marathon在执行cmd文件之前,执行解压压缩包的操作,支持压缩包给格式为:
.tgz .tar.gz .tbz2 .tar.bz2 .txz .tar.xz .zip
下面是压缩包的实例:
{ "id": "basic-2", "cmd": "app/cool-script.sh", "cpus": 0.1, "mem": 10.0, "instances": 1, "uris": [ "https://example.com/app.zip" ] }
marathon还可以下载git仓库或是cdn的资源,实例如下:
{ ... "uris": [ "https://git.example.com/repo-app.zip", "https://cdn.example.net/my-file.jpg", "https://cdn.example.net/my-other-file.css" ] ... }
marathon还支持下载其他很多资源,支持URI的协议如下:
file: http: https: ftp: ftps: hdfs: s3: s3a: s3n:
一个简单的基于docker的应用
使用marathon我们可以运行docker镜像。下面的实例中,我们注重看一个docker应用:一个使用python编写的web服务,它使用python:3镜像。容器内部,这个web服务运行在8080端口(这个端口号使用containerPort定义)。容器的外部,marathon分配任意个接口(hostPort设置为0)。
{ "id": "basic-3", "cmd": "python3 -m http.server 8080", "cpus": 0.5, "mem": 32.0, "container": { "type": "DOCKER", "docker": { "image": "daocloud.io/library/python:3", "network": "BRIDGE", "portMappings": [ { "containerPort": 8080, "hostPort": 0 } ] } } }
在这个例子里,我们将使用HTTP API部署basic-3应用。
curl -X POST http://10.141.141.10:8080/v2/apps -d @basic-3.json -H "Content-type: application/json"
我们可以在marathon ui界面查看随机分配的访问端口访问应用。
相关文章推荐
- 西安商洛之行
- MVC |表单提交 Html.BeginForm
- vs2015 生成 cordova 页面中文乱码
- ListView 应用扩展
- HDU 1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程 最小生成树
- lintcode: Largest Number
- E Cheerleaders (UVA 11806)
- 【MongoDB】The Access control of mongodb
- Problem L: 递归函数求n的阶乘
- C 【数据类型 静态&动态】
- SDAU课程练习2 1022
- 前端需要了解的
- Step by Step into Spring(IOC)
- ife-task3:三栏式布局--再谈position 属性的基本知识
- April Fools Day Contest 2016 题解
- Spring MVC 常用的那些注解
- POJ1797 Heavy Transportation
- 《算法导论》学习摘要chapter-6——优先队列
- POJ_3253_Fence Repair