Docker的飞速发展已经无需多言了,怎么管理Docker,编排Docker的也存在最够多的工具,但是总觉得没有触及痛点,所以才有数据中心mesos存在的必要,那么mesos是什么,以及mesos能做什么呢,会在本文简要介绍。
这里先放一张自己对于mesos的理解以及使用的思路,如有偏颇还望指正。
根据上图,我们将物理机全部纳入mesos这个发布系统里面,这样是个我们把手上的物理机资源全部抽象到了一起,这样我们就不用担心CPU,内存,硬盘的使用情况,因为到某个应用需要更多的资源的时候,我们可以直接动态添加,我想光是这点就足够让我们跃跃欲试了吧,更重要的是我们不需要采购硬件配置一样的服务器。
前面这点内容当然不足够说清mesos是什么,能做什么,在笔者看来,想要了解一样东西纸上谈兵当然是万万不能的,所以让我们先把环境搭起来,用起来,这样我想才能更加深刻的了解Mesos。
安装:
系统环境: Centos7
mesos 集群
172.16.51.72 mesos-master
172.16.51.72 mesos-slaver
172.16.51.71 mesos-slaver
172.16.51.73 mesos-slaver
zookeeper 集群
172.16.51.72 1
172.16.51.71 2
172.16.51.73 3
注:iptables,selinux 什么的当然是关闭的
安装方式 rpm 包
rpm 源
rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
安装 mesos , marathon , zookeeper
yum -yinstall mesos marathon yum -yinstall mesosphere-zookeeper
<span style="font-size:16px;">配置zookeeper集群</span>
72,71,73 的 myid 依次配置为 1,2,3 , myid 文件默认不存在
cat /var/lib/zookeeper/myid 1
然后配置 zookeeper 配置文件
每个zookeeper节点加入下面三行
cat /etc/zookeeper/conf/zoo.cfg server.1=172.16.51.72:2888:3888 server.2=172.16.51.71:2888:3888 server.3=172.16.51.73:2888:3888
然后依次启动 zookeeper
<span style="font-size:16px;">systemctlstart zookeeper</span>
查看是否监听
lsof -i:2181
为 mesos 配置 zookeeper 信息 ( 无论 master 还是 slaver 都要配置 )
zk://172.161.51.72:2181,172.16.51.71:2181,172.16.51.73:2181/mesos
然后启动 master 端
service mesos-master restart
启动 slaver 端
service mesos-slave restart
很简单有木有。
然后验证 mesos , marathon 是否安装成功
访问 mesos-master主机 的 5050 及 8080 端口,如下图
注意:如果是第一安装完成,对应的web页面应该是没有任何任务的,比如上面的test
到这里可能就有疑问了,然后呢?
首先看看Mesos的架构。
根据上面的示意图再结合我们的已安装环境,我们建立了三个mesos-slaver节点,一个mesos-master端节点(其实mesos-master端也可以做一个集群)
之于上面的Hadoop,MPI scheduler我们先放一边。
zookeeper用于服务发现(这里我们做成集群模式,是为了高可用),所以无论是mesos-slaver或者mesos-master节点都需要设置zookeeper的配置信息,通过zookeeper,mesos-master会问mesos-slaver是哪些主机以及它的相关信息是什么,反之亦然。
然后mesos-master会只会mesos-slaver它们需要做什么,怎么知道mesos-slaver能做什么呢?
我们看下图。
根据上图,mesos-slaver会告诉mesos-master端自己有多少资源,比如多少cpu,内存等,然后master-slaver决定怎么分配资源,怎么分配任务,那么我们怎么给mesos索要资源及发布任务呢,那么我们就得知道什么是框架了,下面讲解两个主要的框架,marathon,chronos。
什么是框架呢?就是用来索要源的,看看具体实例,你就会有一定了解了。
Marathon 是建立在 Mesos 上的私有 PaaS 平台。 它能自 动处 理硬件或者 软 件故障, 并确 保每个 应 用程序都 " 永 远 在 线 "(比如,你在marathon中设置是某应用三个实例,那么其中一个挂掉,marathon会立即在启一个实例,维持在三个实例) ,个人觉得跟 kubernetes 有点重叠的意思,当然kubernetes更强大,因为编排的能力更强。
默认监听端口: 8080
主要功能:创建常驻任务,任务扩建等 ( 比如实例的数量增加 )
创建 JOB
如上图,我们创建一个ID为test的任务,并且分配了0.1的CPU(默认),16MB内存 (默认) ,OMB硬盘 (默认),一个实例 (默认),然后这个实例执行的命令 python-m SimpleHTTPServer ,然后点击“create”即可,创建成功后,mesos-master就是随机让mesos-slaver就是创建一个实例。
为了方便验证,我们可以将实例个数选为3,然后查看是否监听。
然后验证一下。
注意:名字随意,但是不跟现有的 ID 名冲突即可
然后看一看基本设置
ID 设置
名字随意,不跟现有的 ID 名冲突即可
CPU ,内存,硬盘,实例个数 (自定义)
CPU ,内存,硬盘,实例个数 (自定义)
执行的 command
比如用 Python 起一个简单的 web 服务
python-m SimpleHTTPServer
Docker 容器的相关设置
网络,数据卷等
环境变量如
JAVA_HOME= xxx
标签
自定义标签,用于分类
健康监控
有 command , http , tcp 三个方式检测
其他选项 (optional settings)
如端口
还有最后一个限制 constraint
比如限制哪个节点启动这个任务
创建成功,后点击具体任务,有相关信息,如主机端口等
mesos-master 端也有相应 job 信息
下面是 marathon 的相关信息
然后主要的三个动作,分别是扩展 ( 比如一个实例到三个实例 ) ,重启,挂起,销毁
注:因为里面的 test 任务,写的命令是 python-m SimpleHTTPServer 所以都默认监听 8000 端口,因为只有三个节点,所以最多启三个实例,虽然可以将 scale( 规模 ) 设置成 3 以上但是会不断的启新实例,然后不断的失败,并一直启。
所以启三个以上的实例应该保证占用的端口不一样
比如端口随机
python-m SimpleHTTPServer $PORT
因为创建任务是支持Docker的,我们不妨想象一下,我们能够直接将使用已有的docker环境中镜像。
chronos 是一个分布式作 业调 度程序, 支持复 杂 的拓部 结构 。 它可以成 为 cron 的替代
品, 提供更好的容 错 性。
chronos 就是个计划任务,不过分布式而已
安装
<span style="font-size:16px;">yum -y install chronos</span>
<span style="font-size:16px;">servicechronos start</span>
<span style="font-size:16px;"> </span>
<span style="font-size:16px;">默认监听4400</span>
<span style="font-size:16px;"><a href="http://s4.51cto.com/wyfs02/M02/79/55/wKiom1aOU7jgSpQnAAH7CpciNog566.png" target="_blank"><img onload="if(this.width>650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/79/55/wKiom1aOU7jgSpQnAAH7CpciNog566.png" title="Image 13.png" alt="wKiom1aOU7jgSpQnAAH7CpciNog566.png" /></a></span>
<span style="font-size:16px;"> </span>
<span style="font-size:16px;">比如</span>
<span style="font-size:16px;"><a href="http://s5.51cto.com/wyfs02/M02/79/54/wKioL1aOVAaxb68KAAJ9f7auVq8399.png" target="_blank"><img onload="if(this.width>650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/79/54/wKioL1aOVAaxb68KAAJ9f7auVq8399.png" title="Image 14.png" alt="wKioL1aOVAaxb68KAAJ9f7auVq8399.png" /></a></span>
cat /tmp/test2.txt Sat Dec26 17:08:10 CST 2015
<span style="font-size:16px;"> </span>
<span style="font-size:16px;">结语:既然是初始,那么久先到这里吧,笔者也还在研究中。</span>