marathon 初步使用

关闭selinux setenforce 0

Marathon之应用篇

先来了解一下  Marathon 是怎么布署decker的

json
shell.json

{    "id": "shell",     "cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",    "cpus": 0.1,    "mem": 10.0,    "instances": 

}
curl http://10.134.29.134/v2/apps -d @shell.json -H "Content-type: application/json"
#Mesos底层执行器进行执行,通过/bin/bash -c ${cmd}

marathon管理界面 简单了解


App

代表一个工作实类型,发布了一个tocmat网站

task

   代表这个网在在几个容器中运行

# marathon提供app的自动扩展,健康检查以及运行情况的健康,日志管理等功能

# marathon对app的生命周期进行有效的管理

# Scale Application进行快速扩容 task数量?

#  销毁  点击kill & scale即可

#  ps命令查看shell所在节点的进程ID  lsof查看该进行打开的文件

# 使用 Web-UI创建 应用

#  marathon如何应用远程资源

# Mesos fetcher

json文件 格式

{    "id": "shell",

"cmd": "shell/shell.sh",

"cpus": 0.1,

"mem": 10.0,

"instances": 1,

"uris": [

"http://10.128.3.75/shell.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"    ]    ...

}

容器运行

  json文件 中 container 子对象

"container": {

"type": "DOCKER",

"docker": {      "image": "python:3",

"network": "BRIDGE",

"portMappings": [    { "containerPort": 8080, "hostPort": 0 }      ]

}

}

post 方式

curl -X POST http://10.134.29.134:8080/v2/apps -d web.json  -H "Content-type: application/json"

端口分配

1)container中的portMapping

containerport、

hostport、

serviceport

2) 应用配置的Optional settings中的Ports

3) 实际App中某一Task分配的port(s)

------------------------------------------------------------------------------------------------------------------------------------------------------------------

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之间。

-----------------------------------------------------------

健康检查

健康检查针对的是App下的每一个Task

Task有三种活动状态:健康,非健康和扩展中

开始测试1

目标: 通过http post方式在集群下创建一个最简单的docker容器。

第一步  在marathon 界面端 UI模式下测试,可以成功创建一个容器。

然后切换到 json模式,得到一个json内容如下:

{
"id": "tomcat-test",
"cmd": null,
"cpus": ,
"mem": ,
"disk": ,
"instances": ,
"container": {
"docker": {
"image": "tomcat",
"forcePullImage": false
},
"type": "DOCKER",
"portMappings": [
{
"containerPort": ,
"protocol": "tcp",
"name": "testport",
"labels": null
}
],
"volumes": []
},
"networks": [
{
"mode": "container/bridge"
}
],
"env": {},
"labels": {},
"healthChecks": []
}

在局域网另一台linux  192.168.1.19 下创建测试文件 /test-marathon/create.tomcat.json

json内容就是上面的配置

在 192.168.1.19机器上测试用post方式创建镜像:

curl -X POST http://192.168.1.161:8080/v2/apps -d@/test-marathon/create.tomcat.json -H "Content-type:application/json"

在UI 可以看到

tomcat-test  这个APP己成功运行了
ID 192.168.1.151:31199 app被生成在这个节点当中了。
到页面删除这个 app 再重新几次测试 可以看到会分配到
192.168.1.151 192.168.1.152 192.168.1.153 三个中的一个 端口号 31199 是随机分配的 第二步  测试各种端口作用。 目标: 通过布署一个tomcat 来发布一个有内容的app应用,应用内要连接外网的mysql., 并通过web访问应用的主页。 1),准备一个简单的war包。
里面有连接mysql操作,首页连接mysql ,从表里读取一个字段。
然后输出到首页。 2) ,把war包打到tomcat镜像中去。 3),通过 post 发布应用。


marathon 测试的更多相关文章

  1. Docker云Paas平台部署:Docker+Mesos+Marathon

    针对“互联网+”时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及其相关技术的出现和发 ...

  2. Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

    1. Mesos简介 1.1 Mesos Apache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理. Mesos主要由以下几部分组成: Master: 管理各Slave节点 S ...

  3. Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

    参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分 ...

  4. 对比剖析Swarm Kubernetes Marathon编排引擎

    Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目.Docker原生集群(S ...

  5. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)- 负载均衡marathon-lb

    之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡marathon-lb的部署过程: 默认情况 ...

  6. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...

  7. 使用Mesos和Marathon管理Docker集群

    分布式系统是难于理解.设计.构建 和管理的,他们将比单个机器成倍还要多的变量引入到设计中,使应用程序的根源问题更难发现.SLA(服务水平协议)是衡量停机和/或性能下降的标准,大多数现代应用程序有一个期 ...

  8. docker+mesos+marathon

    前言 (Core) [root@docker-slave ~]# uname -r 3.10.0-229.4.2.el7.x86_64 [root@docker-slave ~]# uname -m ...

  9. My First Marathon【我的第一次马拉松】

    My First Marathon A month before my first matathon, one of my ankles was injured and this meant not ...

随机推荐

  1. CSS样式表与HTML结合的方法

    从此王子和公主幸福的生活在了一起:) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文 ...

  2. Session&Cookie(Introduction、Application)

    一Session 1概念: (1)session是会话,是同一连接者所有页面公有的内置对象   (2)session是一段时间,从session创建开始,到session销毁结束,默认时间为30分钟( ...

  3. 构建工具build tools

    构建工具是从源代码自动创建可执行应用程序的程序(例如.apk for android app).构建包括将代码编译,链接和打包成可用或可执行的形式. 基本上,构建自动化是脚本或自动化软件开发人员在日常 ...

  4. delete 与 delete []

    /* Module: delete与delete[]的区别.cpp Notices: Copyright (c) 2017 Landy Tan */ #include <iostream> ...

  5. web 页面上纯js实现按钮倒计数功能(实时计时器也可以)

    需求构思:本功能想实现的是,一个按钮在页面载入就显示提醒续费,,,倒数60秒后,完成提醒功能,可以按另外一个页面跳转到主页. 参考网上的大神,实现如下:Button2倒数,Button3跳转,在页面上 ...

  6. fiddler之数据统计(statistics)

    在使用fiddler代理监听访问时,可以使用statistics分页去统计请求和响应的一些信息. 界面显示如下: 可以在这里查看一个session的统计信息 说明: 1.request count:请 ...

  7. SpringBoot(四)thymeleaf+MyBatis+MySql

    接着上一节 1.第一步:在pom文件中添加 <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.bo ...

  8. Appium·基础+项目

    date:2018609 day13 一.Appium Appium是一个开源.跨平台的测试框架.可以用来测试原生以及混合的移动端应用. 1.安装操作 ①.安装Appium-Python-Client ...

  9. 自动化测试-4.selenium的xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  10. sqlserver查询当前库下,一张表的表名,字段名,字段类型,字段长度

    sqlserver版: 查询当前数据库下所有表名: select * from sys.tables; 查询当前库下,一张表的表名,字段名,字段类型,字段长度: select a.name 表名,b. ...