[经验交流] Apache Mesos Docker集群初探
前言
因工作需要,我对基于Apache Mesos 的 Docker 集群作了一点研究,并搭建了一套环境,以下是资料分享。
1. Apache Mesos概述
Apache Mesos是一款开源群集管理软件,能将数据中心中的CPU、内存、存储、其它资源全部虚拟化并进行管理(引用自百度)。它被一些人认为是继OpenStack之后的“下一代云计算平台”,“代表云计算的未来“。
根据网络资料,Apache Mesos具有高可靠性,经过严酷的生产环境考验。目前Twitter、Mac等公司在使用它。
现在Apache Mesos原生支持Docker.
2. Mesos架构分析
注:插图引用自 http://www.slideshare.net/
Master:
管理slave节点
Slave:
为集群提供资源
Framework:
从Master请求资源,在Slave上执行任务,常用的framework有marathon。当容器崩溃,它会重新创建;当一台slave当机或者docker服务停服,marathon会自动把上面的docker容器转移到其它slave上。
Zookeeper:
为集群提供一致性服务。
3.
安装Mesos
Cluster
按照mesos官方文档安装Mesos
+ Marothon集群,安装好后简单配置即支持docker
https://open.mesosphere.com/getting-started/install/
通过yum安装很简单。
mesos管理界面:
(从任意一台master的5050端口访问)
marathon管理界面:
(从任意一台master的8080端口访问)
.Mesos
Docker集群使用初探
4.1
创建任务
可以通过marathon的ui界面创建任务,也可以用POST方式向marathon发送任务。
通过marathon的服务,我们可以限制任务的资源使用量,比如:CPU、内存、磁盘,也可以限制任务的实例个数。marathon负责资源分配、故障切换。
4.1.1
Marathon UI
4.1.2
HTTP POST
首先把任务信息写成json格式,保存成一个文件,比如:test-docker.json:
{
"id":
"test-docker",
"cpus":
0.5,
"mem":
64.0,
"instances":
3,
"constraints":
[["hostname", "UNIQUE"]],
"container":
{
"type":
"DOCKER",
"docker":
{
"image":
"httpd",
"privileged":
true,
"network":
"BRIDGE",
"parameters":
[
{"key":
"publish", "value": "80:80"}
]
},
"volumes":
[
{
"containerPath":
"/usr/local/apache2/htdocs",
"hostPath":
"/var/nfsshare/htdocs",
"mode":
"RO"
}
]
}
}
这个json描述的任务信息是:
任务ID:test-docker
内存用量:64M(每个实例,以下类同)
CPU用量:0.5
实例数:3
限制:每个slave只部署一个实例
容器信息:
镜像:httpd
类型:docker
privileged:
true
网络:桥接
参数:
容器的80端口映射到slave的80
volumn:容器的htdocs目录挂到slave的相关目录
用curl通过POST方式向marathon端口发送任务:
curl
-i -H 'Content-Type: application/json' -d@test-docker.json
172.31.17.71:8080/v2/apps
之后marathon界面就会出现任务信息:
status下面的蓝色表示创建成功,3of3表示任务中的3个实例都创建成功。
把任务点开,可以看到3个实例创建在slave1,
slave2和slave3上:
分别用浏览器打开三个slave的80端口,发现httpd已经运行了:
4.2
高可用测试
1)docker容器故障切换
杀死slave1上正在运行的容器,slave4上很快创建了一个相同功能的容器
2)docker服务故障切换
关闭slave1的docker服务后,上面的任务很快会切换到slave4上
3)slave节点故障切换
关机slave4,只要集群中的slave数目足够,marathon会自动在其它slave上启动一个httpd容器
4)master节点故障切换
关闭一个master,整体功能不受影响,在其他master可以正常操作。
[经验交流] Apache Mesos Docker集群初探的更多相关文章
- Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)
1. Mesos简介 1.1 Mesos Apache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理. Mesos主要由以下几部分组成: Master: 管理各Slave节点 S ...
- 基于zookeeper+mesos+marathon的docker集群管理平台
参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...
- Apache Doris 单节点(可多节点)Docker集群制作教程
集群制作Author:苏奕嘉脚本研发Author:种益调研测试Author:杨春东 前言 Apache Doris是当下非常火热和流行的MPP架构OLAP数据库,很多同学想自学/测试Doris的使用和 ...
- docker集群——初识Swarm
为Docker构建原生的集群管理工具的计划早在2014年初就开始了,当时作为一个通信协议项目,称为Beam.之后,它被实现为一种后台程序,使用Docker API来控制异构化的分布式系统.项目重新命名 ...
- [经验交流] 为 mesos framework 分配资源
前段时间我在办公网搭建了一套mesos平台,用于docker 集群相关的调研和测试,mesos + marathon + docker 架构运行正常.但是在启用了chronos后,marathon无法 ...
- k8s docker集群搭建
一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...
- Kubernetes(k8s) docker集群搭建
原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背 ...
- RocketMQ(2)---Docker集群部署RocketMQ
RocketMQ(2)-Docker集群部署RocketMQ =前言= 1.因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服 ...
- docker集群管理之swarm
一.简介 docker集群管理工具有swarm.k8s.mesos等,我所用到的是swarm和k8s,这篇文章主要介绍swarm:swarm是docker集成的原生 管理工具,只要你安装上docker ...
随机推荐
- 常用js,css文件统一加载方法,并在加载之后调用回调函数
原创内容,转载请注明出处! 为了方便资源管理和提升工作效率,常用的js和css文件的加载应该放在一个统一文件里面完成,也方便后续的资源维护.所以我用js写了以下方法,存放在“sourceControl ...
- PHP自动发邮件
自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- Android doc打开太慢
C:\Windows\System32\drivers\etc\HOSTS 127.0.0.1 fonts.googleapis.com 127.0.0.1 www.google.com 127.0. ...
- ITPUB网站的知识索引汇总
1. ITPUB知识索引树 http://www.itpub.net/tree/ http://www.itpub.net/pubtree/index.htm 2. ITPUB知识索引贴——全文索引 ...
- 联想 thinkpad fn键关闭,优化使用
工作给配的电脑是,联想 thinkpad E431,fn键真的是很不合理的设计. 首先,从位置上来讲,这个fn键应该是ctrl才符合通常键盘的操作习惯. 其次,从功能上来讲,当我调是程序的时候,按F6 ...
- WCF事务应用[转]
在B2B的项目中,一般用户注册后,就有一个属于自己的店铺,此时,我们就要插入两张表, User和Shop表. 当然,要么插入成功,要么全失败. 第一步: 首先看一下项目的结构图: 第二步: 准备工作, ...
- 安装Pod时提示ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod
环境:OSX EI 10.11.1 昨天切换gem源后,招待pod安装没有任何问题,也可以正常用$ gem sources --add https://ruby.taobao.org/ --remov ...
- ProcExp和TaskMgr的列对比
这两者的大部分列都是一致的,包括pid.threads.handles等,但在内存方面却有出入,对比如下: ProcExp TaskMgr Sample.exe Private Delta Bytes ...
- wine install 32bit netframewok
WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg env WINEARCH=win32 WINEPREFIX=~/.wine32 winetricks dotne ...