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. Vue-Router + Vuex 实现单页面应用

    效果查看(一个食品安全网,大家也可以发布一些食品安全的见闻,尽举手之劳): 源代码:https://pan.baidu.com/s/1i43H3LV 如果想要服务器端代码可以在评论里说明一下 利用vu ...

  2. 『TensorFlow』梯度优化相关

    tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该 ...

  3. 『TensorFlow』分类问题与两种交叉熵

    关于categorical cross entropy 和 binary cross entropy的比较,差异一般体现在不同的分类(二分类.多分类等)任务目标,可以参考文章keras中两种交叉熵损失 ...

  4. React文档(十二)组合vs继承

    React拥有很强大的组合模型,我们建议使用组合来替代继承来重利用组件之间的代码. 在本章节中,我们将讨论一些开发者经常触及继承的问题,并且我们该如何使用组合来解决这些问题. 组合 一些组件事先不知道 ...

  5. PAT 1077 Kuchiguse

    1077 Kuchiguse (20 分)   The Japanese language is notorious for its sentence ending particles. Person ...

  6. 和系统运行状况相关的Shell命令总结

    1.  Linux的实时监测命令(watch):    watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行.该命令最为常用的两个选项是-d和-n,其中-n表 ...

  7. linux下mysql多实例安装

    1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...

  8. JS的防抖和节流

    数个月之前,在一次前端的性能优化中,接触到了JS中防抖和节流,一开始还不明白他们的应用在哪里,可后来才知道,这是前端中最基础的性能优化,在绑定 scroll .resize 这类事件时,当它发生时,它 ...

  9. python中字符串方法总结

    定义一个空字符串: a=' '; s.strip() #去空格 s.upper()#全部转换成大写: s.lower()# 全部转换成小写: s.isdigit()#判断字符串是否只有数字组成:返回t ...

  10. MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)

    今天在存储emoji表情的时候,发现无法存储,mysql版本太低也没办法使用uft8mb4格式编码,只能将数据字段设置为blob BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型 ...