基础应用
首先我们将下述代码,保存为shell.json:
{
“id”: "shell",
"cmd": "while [true];do echo 'DCOS shell';sleep 5;done",
"cpus": "0.1",
"mem": "10.0",
"instances": "1"
}
执行下述命令行:
curl 10.134.29.134:5000/v2/apps -d @shell.json -H "Content-type:application/json"
其将json文件通过marathon api传递给调度器,请求创建一个实例,资源需求为0.1cpu、10M内存、执行shell命令行。cmd将被发送给Mesos底层执行器进行执行,最终通过/bin/bash -c ${cmd}。
打开DCOS控制面板,选择Marathon管理界面,如图所示,可以发现名为shell的App正在运行,App在Marathon创建中是一对多的关系,即一个App可以有多个Task。
图 3-1
通过上图可以发现,Marathon提供App手动扩缩功能、健康检查、日志管理以及App生命周期的管理等功能。
首先,我们介绍Marathon对App实现手动扩缩的功能,选择Scale Application进行快速扩容,如下图所示,填写10,即可将App扩展到10个Task。
图 3-2
如下图所示,shell App扩展到10个Task:
图 3-3
既然可以扩展,那么当然可以收缩,选择你要销毁的Task,点击Kill&scale即可。除了上述通过curl命令创建App以外,Marathon提供Web UI创建App,点击主界面的create,在选框中填入相应参数即可,具体如下图所示。
图 3-4
这一小节,关于Marathon的基础应用部分介绍完毕,下面我们将介绍Marathon如何应用远程资源。
运行远程资源
对于复杂应用,无法通过简单的cmd命令传递所以操作,对于此类情况,Marathon提供uri参数,在执行调度前,利用Mesos fetcher来下载、解压操作,提取资源。在深入探讨此话题前,我们通过实例来了解应用场景:
{
“id”: "resource",
"cmd": "./shell.sh",
"cpus": "0.1",
"mem": "10.0",
"instances": "1",
"uris": [
"http://10.128.3.75/images/shell.sh"
]
}
上述实例执行cmd之前,会通过Mesos下10.128.3.75/images/shell.sh,之后会在所选slave节点的应用沙箱中执行该资源,可以通过web界面查看该任务的沙箱,单击进入页面,可以查看到Mesos下载的shell.sh脚本。
需要注意的是,Mesos v0.22及以上版本在默认情况下执行cmd的方式,是先设权限后执行,因此,cmd命令类似于chmod u+x shell.sh &&sh shell.sh。
除了上述提及的功能之外,Marathon框架自身清楚框架内的应用资源。当然,Marathon对于下述文件将首先尝试解压并提取资源:
· .tgz
· .tar.gz
· .tbz2
· .tar.bz2
· .txz
· .tar.xz
· .zip
uris对资源进行定位下载,Marathon支持多种协议类型,种类如下所示:
· file:
· http:
· https:
· ftp:
· ftps:
· hdfs:
· s3:
· s3a:
· s3n:
uri的值是数组类型,可以支持同时输入多个资源:
{ ...
"uris": [
"https://github.com/zouyee/repo.zip",
"http://10.128.3.75/images/shell.sh",
"ftp://10.128.3.75/images/my-other-file.css"
]
...
}
容器运行
1、简单应用
Marathon可以使用docker对应用进行高效快捷的部署,在下述应用实例中,使用docker部署一简单web应用:使用Docker的python:3镜像,启动一个容器内部端口8080的服务,网络模式选择bridge,因此有portMapping选项,在其字段中,hostport值设为0,意味着Marathon任意分配映射到外部的端口,json内容如下所示:
{
"id": "web",
"cmd": "python3 -m http.server 8080",
"cpus": 0.5,
"mem": 32.0,
"container":
{
"type": "DOCKER",
"docker":
{
"image": "python:3",
"network": "BRIDGE",
"portMappings":
[
{
"containerPort": 8080,
"hostPort": 0
}
]
}
}
}
通过HTTP API接口启动该应用:
curl -X POST http://10.134.29.134:8080/v2/apps -d web.json -H "Content-type: application/json"
通过dcos client启动该用,dcos marathon app add web.json
通过Marathon web UI界面可以看到名为web的应用已运行。
图 3-5
2、端口分配
Marathon涉及到端口配置或者端口概念的地方有三处,第一部分是在应用配置的container中的portMapping,主要有containerport、hostport、serviceport,如图3-6所示,第二处在应用配置的Optional settings中的Ports,如图3-7所示,第三处在实际App中某一Task分配的port(s),如下图3-8所示。
图3-6 container中的端口映射
图 3-7 可选项中的端口
图 3-8 Task分配到的端口
通过图3-6可以发现,Port Mappings包括Container Port、Host Port、Service Port、Protocol等字段,图3-7可以发现,Optional settings包含Ports字段。
containerPort:container Port指定在容器内部的端口,它适用于docker的bridge网络做port mapping。
hostPort:host Port指定主机绑定端口,当使用BRIDGE网络,需要指定从主机端口到容器端口的port mapping,当使用HOST网络,请求端口默认为主机端口。
BRIDGE网络:docker应用可以使用BRIDGE网络。在此网络环境中,container port(容器内部端口)对应host port(主机上的端口)。
HOST网络:HOST网络可用于非docker的Marathon应用和docker应用,此模式中,应用直接绑定主机的一或者多个端口。
ports:这个port需要被视作一种资源,在使用HOST网络时,就需要设定。
protocol:协议指定使用的端口(比如tcp、udp)
servicePort:Marathon不绑定此端口,其被用作服务发现。
如果在portMapping中containerPort设为0,它的值将会与hostPort一致,hostPort将随机分配,默认范围在31000-32000之间。
关于DCOS的Marathon应用篇先介绍这么多,下一篇将介绍应用群组以及健康检查相关内容,谢谢您的阅读!
http://sanwen8.cn/p/1f0EGer.html
相关推荐
DCOS之Marathon技术文档详细介绍了Marathon的安装、配置、应用部署、高可用设置、SSL和基础认证配置、服务发现、负载均衡以及应用迁移等方面的知识。 首先,Marathon是一个为Apache Mesos集群提供长服务运行的框架...
Marathon 是一个mesos 框架,能够支持运行长服务,比如web 应用 等。是集群的分布式Init.d,能够原样运行任何Linux 二进制发布版本, 如 Tomcat Play 等等,可以集群的多进程管理,实现服务的发现,为部 署提供提供...
DCOS(Distributed Operating System,分布式操作系统)是Mesosphere公司推出的一款开源平台,它构建于Apache Mesos之上,用于管理和运行分布式应用。DCOS 1.11版本提供了丰富的功能和改进,旨在为企业级数据中心...
DCOS 提供了一个统一的框架来部署、管理和协调大规模分布式应用和服务。 - **核心概念**: - **Linux操作系统**:基础的操作系统环境,支持用户模式和内核模式。 - **硬件系统组件**:包括CPU、内存、存储和网络...
3. **dcos_marathon_group**: 管理应用组,支持创建、更新和删除包含多个应用的组。 4. **dcos_service**: 针对DC/OS服务的操作,包括启动、停止、查询服务状态等。 5. **dcos_config**: 能够修改和查看DC/OS集群的...
- `Marathon` 是一个应用管理框架,用于部署和管理容器化的应用程序。 - `Zookeeper` 提供了一种协调服务,用于维护集群状态。 - `mesos-DNS` 用于提供 DNS 解析服务,支持服务发现。 2. **Slave 节点**:包含一...
首先,DCOS的核心组件之一是Marathon,它是用于长期运行任务的调度器。在DCOS 1.9中,Marathon可能已经得到了性能上的提升,能够更有效地处理大规模应用部署和更新,同时增强了对故障恢复和自动扩展的支持。 其次,...
Mesos负责资源管理,Marathon负责应用管理,Chronos负责作业调度。 5. PaaS到DCOS的演变:小米弹性调度平台从PaaS演变而来,PaaS提供了一个基于云计算的应用开发和部署平台,而DCOS提供了一个基于分布式系统的云...
3. **脚本和工具** - 可能包含一些辅助脚本,用于简化部署、监控或更新Marathon应用的流程。 4. **测试和验证** - 可能包括了测试用例或自动化脚本来确保演示的正确性。 通过这个Marathon演示,用户可以学习如何在...
marathon-autoscale, 基于利用率的扩展应用在马拉松应用中的简单概念 马拉松自动缩放可以在马拉松管理下运行以动态扩展运行在 dc/os上的服务的Dockerized容器 autoscaler 。先决条件正在运行的DCOS群集。如果在 dc/...
马拉松磅 Marathon-lb是通过使用应用程序状态来管理HAProxy的工具。 HAProxy是一种快速,高效,经过考验的高可用性负载均衡器,具有许多高级功能,可为许多备受瞩目的网站提供支持。特征无状态设计:不直接依赖任何...
云计算的快速发展正驱动着企业IT架构的演进,从传统的“烟囱”式IT系统架构...DCOS对于推进企业IT架构的云化演进、实现数据中心的动态资源管理和应用快速部署具有重大意义,是实现企业敏捷性和高效性的关键技术路径。
此应用程序允许您自动生成和更新Marathon-lb的“让我们加密”证书。 它必须作为马拉松应用程序运行。 应用程序在启动时会生成或更新证书,并每隔24小时检查一次是否需要更新证书。 如果您需要新域或其他域的证书,则...
Gradle-Cloud-Deployer Gradle-Cloud-Deployer是gradle插件,可将您的应用程序直接部署到您的云中。 该插件可在。 查看!支持的云协调器受支持的云协调器和概念是...支持的概念应用程序团体支持的概念部署方式服务...
2. **自动扩缩与故障自愈**:DCOS支持自动扩缩功能,可以根据应用程序的CPU IDLE、MEM FREE、PROC QPS等指标,在最短5秒内触发伸缩策略,通过Hook回调Marathon或K8S API进行动态调整。同时,系统具备故障自愈能力,...
此外,DCOS不仅关注容器的管理,更注重整体的资源管理和应用生命周期管理。通过Marathon和Chronos等工具,可以实现应用的自动化部署、监控和弹性扩缩容,确保高资源利用率,降低TCO。 总结来说,基于容器的DCOS是...
Docker和Docker-init的应用确保应用的隔离和安全,Marathon作为认证信任源,自动进行数据库的授权。 随着向DCOS的演进,Ocean引入了更多的服务,如DBaaS(Database as a Service)和Cache-as-a-Service。DBaaS通过...
与传统的操作系统不同,DC / OS跨网络中的多台计算机,聚集其资源以最大程度地利用分布式应用程序。 要了解更多信息,请参阅。我如何...? 了解更多 查找文档-https: 安装-https: 入门-https: 获取帮助 加入讨论区-...
有一个用于运行平衡器的示例json文件,您可以将其用于: dcos marathon app add frontend-balancer.json刷新作业每10秒运行一次,使用VIRTUAL_HOST标签查看所有应用程序,并创建一个指向提供的第一个端口的代理条目...
DC/OS 是基于 Mesos 框架构建的分布式系统平台,旨在提供一个统一的环境来管理和运行微服务、容器化应用以及其他分布式系统组件。 一、DC/OS 发展概述 DC/OS 起源于 Apache Mesos,一个分布式资源调度框架,它允许...