`
m635674608
  • 浏览: 5041789 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DCOS之Marathon应用管理篇

 
阅读更多

基础应用

 

首先我们将下述代码,保存为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应用:使用Dockerpython: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,主要有containerporthostportserviceport,如图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技术文档

    DCOS之Marathon技术文档详细介绍了Marathon的安装、配置、应用部署、高可用设置、SSL和基础认证配置、服务发现、负载均衡以及应用迁移等方面的知识。 首先,Marathon是一个为Apache Mesos集群提供长服务运行的框架...

    dcos之marathon技术文档

    Marathon 是一个mesos 框架,能够支持运行长服务,比如web 应用 等。是集群的分布式Init.d,能够原样运行任何Linux 二进制发布版本, 如 Tomcat Play 等等,可以集群的多进程管理,实现服务的发现,为部 署提供提供...

    dcos11.zip源码

    DCOS(Distributed Operating System,分布式操作系统)是Mesosphere公司推出的一款开源平台,它构建于Apache Mesos之上,用于管理和运行分布式应用。DCOS 1.11版本提供了丰富的功能和改进,旨在为企业级数据中心...

    Big Data Over DCOS

    DCOS 提供了一个统一的框架来部署、管理和协调大规模分布式应用和服务。 - **核心概念**: - **Linux操作系统**:基础的操作系统环境,支持用户模式和内核模式。 - **硬件系统组件**:包括CPU、内存、存储和网络...

    PyPI 官网下载 | ansible-modules-dcos-1.0.6.tar.gz

    3. **dcos_marathon_group**: 管理应用组,支持创建、更新和删除包含多个应用的组。 4. **dcos_service**: 针对DC/OS服务的操作,包括启动、停止、查询服务状态等。 5. **dcos_config**: 能够修改和查看DC/OS集群的...

    DCOS深入分析

    - `Marathon` 是一个应用管理框架,用于部署和管理容器化的应用程序。 - `Zookeeper` 提供了一种协调服务,用于维护集群状态。 - `mesos-DNS` 用于提供 DNS 解析服务,支持服务发现。 2. **Slave 节点**:包含一...

    DCOS1.9DEEPDIVE.zip

    首先,DCOS的核心组件之一是Marathon,它是用于长期运行任务的调度器。在DCOS 1.9中,Marathon可能已经得到了性能上的提升,能够更有效地处理大规模应用部署和更新,同时增强了对故障恢复和自动扩展的支持。 其次,...

    小米弹性调度平台-从PaaS到DCOS.pdf

    Mesos负责资源管理,Marathon负责应用管理,Chronos负责作业调度。 5. PaaS到DCOS的演变:小米弹性调度平台从PaaS演变而来,PaaS提供了一个基于云计算的应用开发和部署平台,而DCOS提供了一个基于分布式系统的云...

    marathon-demo:Marathon 演示资源

    3. **脚本和工具** - 可能包含一些辅助脚本,用于简化部署、监控或更新Marathon应用的流程。 4. **测试和验证** - 可能包括了测试用例或自动化脚本来确保演示的正确性。 通过这个Marathon演示,用户可以学习如何在...

    marathon-autoscale, 基于利用率的扩展应用在马拉松应用中的简单概念.zip

    marathon-autoscale, 基于利用率的扩展应用在马拉松应用中的简单概念 马拉松自动缩放可以在马拉松管理下运行以动态扩展运行在 dc/os上的服务的Dockerized容器 autoscaler 。先决条件正在运行的DCOS群集。如果在 dc/...

    marathon-lb:Marathon-lb是DCOS的服务发现和负载平衡工具

    马拉松磅 Marathon-lb是通过使用应用程序状态来管理HAProxy的工具。 HAProxy是一种快速,高效,经过考验的高可用性负载均衡器,具有许多高级功能,可为许多备受瞩目的网站提供支持。特征无状态设计:不直接依赖任何...

    DCOS云计算规模演进.pdf

    云计算的快速发展正驱动着企业IT架构的演进,从传统的“烟囱”式IT系统架构...DCOS对于推进企业IT架构的云化演进、实现数据中心的动态资源管理和应用快速部署具有重大意义,是实现企业敏捷性和高效性的关键技术路径。

    letsencrypt-marathon-lb:让我们为支持DCOS严格安全模式的Marathon-lb进行加密集成

    此应用程序允许您自动生成和更新Marathon-lb的“让我们加密”证书。 它必须作为马拉松应用程序运行。 应用程序在启动时会生成或更新证书,并每隔24小时检查一次是否需要更新证书。 如果您需要新域或其他域的证书,则...

    gradle-cloud-deployer:Gradle插件可将应用程序部署到Kubernetes和DCOS Marathon

    Gradle-Cloud-Deployer Gradle-Cloud-Deployer是gradle插件,可将您的应用程序直接部署到您的云中。 该插件可在。 查看!支持的云协调器受支持的云协调器和概念是...支持的概念应用程序团体支持的概念部署方式服务...

    弹性调度平台从PaaS到DCOS.pptx

    2. **自动扩缩与故障自愈**:DCOS支持自动扩缩功能,可以根据应用程序的CPU IDLE、MEM FREE、PROC QPS等指标,在最短5秒内触发伸缩策略,通过Hook回调Marathon或K8S API进行动态调整。同时,系统具备故障自愈能力,...

    基于容器的数据中心操作系统-应用实践.pptx

    此外,DCOS不仅关注容器的管理,更注重整体的资源管理和应用生命周期管理。通过Marathon和Chronos等工具,可以实现应用的自动化部署、监控和弹性扩缩容,确保高资源利用率,降低TCO。 总结来说,基于容器的DCOS是...

    IAS2017- 小米弹性调度平台Ocean——从PaaS到DCOS.PPTX

    Docker和Docker-init的应用确保应用的隔离和安全,Marathon作为认证信任源,自动进行数据库的授权。 随着向DCOS的演进,Ocean引入了更多的服务,如DBaaS(Database as a Service)和Cache-as-a-Service。DBaaS通过...

    dcos:DCOS-数据中心操作系统

    与传统的操作系统不同,DC / OS跨网络中的多台计算机,聚集其资源以最大程度地利用分布式应用程序。 要了解更多信息,请参阅。我如何...? 了解更多 查找文档-https: 安装-https: 入门-https: 获取帮助 加入讨论区-...

    dcos-proxy:DCOS前端代理

    有一个用于运行平衡器的示例json文件,您可以将其用于: dcos marathon app add frontend-balancer.json刷新作业每10秒运行一次,使用VIRTUAL_HOST标签查看所有应用程序,并创建一个指向提供的第一个端口的代理条目...

    开源产业白皮书-DCOS.pdf

    DC/OS 是基于 Mesos 框架构建的分布式系统平台,旨在提供一个统一的环境来管理和运行微服务、容器化应用以及其他分布式系统组件。 一、DC/OS 发展概述 DC/OS 起源于 Apache Mesos,一个分布式资源调度框架,它允许...

Global site tag (gtag.js) - Google Analytics