2016年会火的技术之一, Mesos。 花了一些时间, 将Mesos相关的知识整理了一下, 以做备忘。 水平有限, 如有疏漏或谬误之处, 还望指出。
Mesos是一个集群管理平台。 可以理解为是一种分布式系统的kernel, 负责集群资源的分配, 这里的资源指的是CPU资源, 内存资源, 存储资源, 网络资源等。 在Mesos可以运行Spark, Storm, Hadoop, Marathon等多种Framework(框架)。
Mesos的架构主要有Masters(主节点), Slaves(从节点), 和 及在Mesos上运行的Framework(框架)组成。 各个部分的分工如下:
Master: 负责处理Slave节点和Framework间的资源通讯, 根据指定的策略来决定分配多少资源给framework。
Slave: 启动本地进程, 同时向Master报告有哪些资源可用。
Framework: 接收来自Master提供的Slave节点的资源(如CPU和内存), Framework由调度器(负责监控和管理Slave的状态)和执行器(负责在服务器执行应用程序代码)组成。
Mesos的安装部署
需要从官网下载源码进行编译安装, 具体的操作请自行google。 或者参考Mesos的官方文档http://mesos.apache.org/documentation/latest/getting-started/ 或者国内对官方文档的翻译 https://mesos-cn.gitbooks.io/mesos-cn/content/primer/Mesos-of-Getting-Started.html
Mesos的生态
Mesos本身只提供资源的分配, 并不涉及存储, 任务调度等功能, 所以它要和其它软件或者系统搭配使用才能构成完整的分布式系统。 Mesos, Docker, Marathon/Chronos, RabbitMQ, HDFS/Ceph构成了一个完整的分布式系统, 分别负责资源分配, 进程管理,任务调度, 进程间通信和文件系统的功能。 这里可以和Linux做一个横向的比较。 如图1所示:
Docker: 一个开源的应用容器引擎, 它涉及基础技术有Linux cgroup和namespace, 以及AUFS。 Docker可以理解为更轻量级的虚拟机。
Marathon: 针对服务型分布式应用提供任务调度,比如企业网站等这类需要长时间运行的服务。
Chronos: 针对分布式批处理应用提供任务调度,比如定期处理日志或者定期调Hadoop等离线任务。
RabbitMQ: 一种消息队列, 企业级的消息系统。
HDFS: 即Hadoop分布式文件系统, 提供高吞吐量的数据访问, 适合大数据集的分布式应用。
Ceph: 一种分布式文件系统, 开源存储解决方案, 提供对象存储。
除了上述讲到的分布式系统最基本的五大组件外, 分布式系统还涉及到其它的组件, 如负载均衡器, 服务发现器, 系统性能监控器, 系统告警监控器, 对应的软件分别有HAproxy, Zookeeper, Ganglia, Zabbix等
HAproxy: 是一个轻量级的TCP/HTTP的代理, 提供负载均衡功能,支持数以万计的并发。
ZooKeeper: 分布式系统涉及服务发现(分布式系统有多个实例, 系统要知道实例是要通过哪个ip哪个端口去访问, 才能对它进行调度,这个就是服务发现), 这个要配合ZooKeeper来做, 将要调度的实例的地址和端口写到ZooKeeper。
Ganglia: 是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等
Mesos的竞争者
常被人们当做Mesos的竞争者的有Kubernetes。 Kubernetes是google开源的集群管理器, 它的前身是Borg。
二者各自有优势和劣势。
Mesos优势: 起步较早, 有成熟的生态和企业应用。
Mesos劣势: 所有的调度器没有对微服务进行抽象。
Kubernetes优势:对微服务有很好的支持, 其Pod, Service, NameSpace都是对微服务的很好的抽象。
Kubernetes劣势: 目前企业的应用实例比较少。
Mesos的企业应用
Mesos现在被用在生产环境中已经有一段时间了。
国外:
国外企业有Apple, Twitter, Netflix, Verizon, Autodesk等, 其中Apple已经有75000个节点的实际应用。
国内:
国内企业有去哪儿网, 数人科技。 其中去哪儿网的具体应用是将日志分析全部托管到Mesos平台,其详细的应用实践可以见参考文献4. 其容器规模在600+。
数人科技则是基于Mesos打造了Paas平台。
参考文档: