初识数据中心Mesos

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

 Docker的飞速发展已经无需多言了,怎么管理Docker,编排Docker的也存在最够多的工具,但是总觉得没有触及痛点,所以才有数据中心mesos存在的必要,那么mesos是什么,以及mesos能做什么呢,会在本文简要介绍。

 这里先放一张自己对于mesos的理解以及使用的思路,如有偏颇还望指正。

 wKioL1aORQnRyyf3AABYUWzHWko735.png

 根据上图,我们将物理机全部纳入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 


安装mesosmarathonzookeeper

1
2
yum -yinstall mesos marathon
yum -yinstall mesosphere-zookeeper


配置zookeeper集群

72,71,73 myid依次配置为1,2,3myid文件默认不存在

1
2
cat  /var/lib/zookeeper/myid
1


然后配置zookeeper配置文件

每个zookeeper节点加入下面三行 

1
2
3
4
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

systemctlstart zookeeper

 

查看是否监听

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


很简单有木有。

然后验证mesosmarathon是否安装成功

访问mesos-master主机50508080端口,如下图


wKiom1aOSd_CUofOAAGU6HSq7qA063.png

wKiom1aOSeDBalItAAEwt0FFlck685.png

注意:如果是第一安装完成,对应的web页面应该是没有任何任务的,比如上面的test


到这里可能就有疑问了,然后呢?

首先看看Mesos的架构。

wKiom1aOS0_yAhKkAALDqEUfMH4013.jpg

 根据上面的示意图再结合我们的已安装环境,我们建立了三个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能做什么呢?

 我们看下图。



wKiom1aOS1GCooYjAAJv9KmHzik432.jpg

 根据上图,mesos-slaver会告诉mesos-master端自己有多少资源,比如多少cpu,内存等,然后master-slaver决定怎么分配资源,怎么分配任务,那么我们怎么给mesos索要资源及发布任务呢,那么我们就得知道什么是框架了,下面讲解两个主要的框架,marathon,chronos。

 什么是框架呢?就是用来索要源的,看看具体实例,你就会有一定了解了。

 Marathon是建立在Mesos上的私有PaaS平台。它能自动处理硬件或者件故障,并确保每个用程序都"线"(比如,你在marathon中设置是某应用三个实例,那么其中一个挂掉,marathon会立即在启一个实例,维持在三个实例),个人觉得跟kubernetes有点重叠的意思,当然kubernetes更强大,因为编排的能力更强。

 

默认监听端口:8080

主要功能:创建常驻任务,任务扩建等(比如实例的数量增加)

 

创建JOB

wKioL1aOUGuCd4WlAAJDWm8lDdk155.png 如上图,我们创建一个ID为test的任务,并且分配了0.1的CPU(默认),16MB内存(默认),OMB硬盘(默认),一个实例(默认),然后这个实例执行的命令python-m SimpleHTTPServer,然后点击“create”即可,创建成功后,mesos-master就是随机让mesos-slaver就是创建一个实例。

 为了方便验证,我们可以将实例个数选为3,然后查看是否监听。

 然后验证一下。

 wKioL1aOUgOjRDQKAAAVL0inutM126.png


注意:名字随意,但是不跟现有的ID名冲突即可


然后看一看基本设置

ID设置

名字随意,不跟现有的ID名冲突即可

 

CPU,内存,硬盘,实例个数   (自定义)



CPU,内存,硬盘,实例个数   (自定义)

 

执行的command

比如用Python起一个简单的web服务

python-m SimpleHTTPServer

 

Docker容器的相关设置

网络,数据卷等

 

环境变量如

JAVA_HOME= xxx

 

标签

自定义标签,用于分类

 

健康监控

commandhttptcp三个方式检测

  

其他选项(optional settings)

如端口

还有最后一个限制constraint

比如限制哪个节点启动这个任务

 

 

创建成功,后点击具体任务,有相关信息,如主机端口等

mesos-master端也有相应job信息

wKioL1aOUnrQqDs6AABwxtHdfoI878.png

  

下面是marathon的相关信息

wKiom1aOUojSNaDYAADe0ZWcNq4406.png

然后主要的三个动作,分别是扩展(比如一个实例到三个实例),重启,挂起,销毁

 

注:因为里面的test任务,写的命令是python-m SimpleHTTPServer  所以都默认监听8000端口,因为只有三个节点,所以最多启三个实例,虽然可以将scale(规模)设置成3以上但是会不断的启新实例,然后不断的失败,并一直启。

 

所以启三个以上的实例应该保证占用的端口不一样

比如端口随机

python-m SimpleHTTPServer $PORT

 

wKiom1aOUr-SgQ21AADTdGJLvms000.png


因为创建任务是支持Docker的,我们不妨想象一下,我们能够直接将使用已有的docker环境中镜像。


chronos是一个分布式作业调度程序,支持复的拓部结构它可以成 cron 的替代
品,提供更好的容性。

 

chronos就是个计划任务,不过分布式而已

安装

yum -y install chronos

servicechronos start

 

默认监听4400

wKiom1aOU7jgSpQnAAH7CpciNog566.png

 

比如

wKioL1aOVAaxb68KAAJ9f7auVq8399.png

1
2
cat  /tmp/test2 .txt
Sat Dec26 17:08:10 CST 2015

 

结语:既然是初始,那么久先到这里吧,笔者也还在研究中。本文转自 youerning 51CTO博客,原文链接:http://blog.51cto.com/youerning/1732682

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
9月前
|
运维 Kubernetes 架构师
中小企业IT基础设施要不要上Kubernetes
中小企业IT基础设施在要不要上Kubernetes?相信你肯定有这样的疑问,先说我的结论:根据我在主导中小企业上云过程的综合实践,建议直接上kubernetes。
|
12月前
|
Kubernetes 负载均衡 API
「首席看容器云架构」设置高可用性Kubernetes Master
「首席看容器云架构」设置高可用性Kubernetes Master
|
存储 资源调度 Kubernetes
新书自荐《深入集群:大型数据中心资源调度与管理》
深入集群 大型数据中心资源调度与管理,已经第2版了(2021-10月)。之前在ata和百晓生发布了新书自荐,这次同步到社区。
598 1
新书自荐《深入集群:大型数据中心资源调度与管理》
|
运维 Prometheus Kubernetes
完完整整的带你建设一套基于生产环境的Kubernetes高可用集群生态圈
完完整整的带你建设一套基于生产环境的Kubernetes高可用集群生态圈
1044 0
完完整整的带你建设一套基于生产环境的Kubernetes高可用集群生态圈
|
弹性计算 Kubernetes 关系型数据库
混合云部署Kubernetes集群
本方案演示线下IDC与阿里云以混合云的形式部署Kubernetes集群,实现云下云上服务交叉调用,云上资源可以根据业务请求峰谷值做弹性伸缩。使用DTS实现IDC与云上数据库单向同步,将云上数据库作为混合云场景下的冗余和灾备,可以在云上部署可接受一定读延迟的业务应用,缓解IDC机房业务压力。
576 0
混合云部署Kubernetes集群
|
容器 资源调度 运维
独家揭秘:阿里巴巴Zeus资源调度系统
本文主要概述阿里巴巴Zeus资源调度系统的背景和实现思路。
3836 0
|
流计算 jstorm
Jstorm基础架构
Jstorm基础架构
1230 0
|
Kubernetes 安全 SDN
正确的在Kubernetes集群中使用SDN技术方法
SDN是Software-defined networking的缩写。在许多介绍Kubernetes的文档,特别是安装文档中, 当介绍到Kubernetes所需的容器网络时常常会提到这个缩写,告知用户需要使用某种SDN技术用以解决“每个Pod有独立IP, Pod之间可以不经过NAT直接互访”这一Kubernetes集群最基本的技术要求。
2227 0
|
存储 监控 关系型数据库
容器化MYSQL集群在Uber系统中的应用
本文讲的是容器化MYSQL集群在Uber系统中的应用【编者的话】Uber使用的Schemaless存储系统支撑了Uber最重要的服务,如,Mezzanine等。Schemaless 是一个构建在MySQL集群上,可扩展高可用的数据存储。
2217 0
|
分布式计算 监控 Spark
去哪儿网基于Mesos和Docker构建私有云服务的实践
本文讲的是去哪儿网基于Mesos和Docker构建私有云服务的实践【编者的话】本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得。
1819 0