数据中心操作系统 DC/OS 简介

Datacenter Operating System (DCOS) 是在一篇来自Berkeley的论文《The Datacenter Needs an Operating System》中第一次被提出来。
论文引用了一个开源初创项目Mesos — 《A platform for finegrained resource sharing in the data center》。

两篇论文的主要贡献者Benjamin Hindman后来就职于Twitter,并在那里成功的引入了Mesos。之后, Benjamin Hindman 成为了 Mesosphere 公司的首席架构师,并基于Mesos 构建了Mesosphere 的数据中心操作系统,命名为DC/OS。

Mesosphere在2016年4月将DCOS开源。这套系统集成了包括Mesos、Marathon、Mesos-DNS、Marathon-LB等组件,构建了一个可供生产业务使用的数据中心操作系统。

本文主要介绍Mesosphere开源的DCOS。

DCOS特性

alt dcos-arch

Mesosphere DCOS 作为管理数据中心的操作系统,本质上是一个分布式操作系统,调度多机集群的计算和存储资源,运行分布式应用服务。除了一般分布式系统高可用、服务能力线性扩张之外,DCOS还有以下特性值得一提。

集成IAAS

DCOS 运行在多机集群之上。这个集群的机器可以是物理机、也可以是来自云服务商提供的云服务器。可以通过IAAS服务商提供的API来构建集群,包括添加删除机器,构建网络。

资源池化

DCOS 使用Mesos作为数据中心操作系统的内核,可以像单机一样调度多机集群资源。DCOS会自动化管理集群的资源,包括CPU、内存和磁盘;统一调度应用进程,并简化应用间通信。

服务容器化

DCOS 可以同时运行多个分布式应用,并进行统一管理。
可用基于Docker容器技术的进行服务运行管理。一般使用 Docker Image 启动应用,并可以通过 Docker 容器限定服务运行的资源、隔离运行环境。

服务软件化

分布式应用的部署向来都是比较复杂,而且因系统而异。DCOS尝试性的提供了Universe管理方案,用一种类似“包管理”的方式来发布和安装分布式应用。在Software as a Service大行天下的今天,在服务部署上DCOS给人一种Service as a Software的赶脚。

核心技术

alt dcos-component

DCOS 依赖的核心技术是Mesos和Marathon。其中Mesos作为数据中心操作系统的内核对多级资源进行池化管理,并定义Framework扩展方式为分布式应用提供运行资源和任务管理。Marathon是Mesosphere公司实现的一个Mesos的通用Framework,可以调度应用和其他Mesos Framework。

资源管理

Mesos被视为数据中心操作系统DCOS的内核,集中管理集群所有的内存、CPU、端口等资源,使得如同单台机器一样操作分布式集群。

其次,Mesos 为 Marathon 分配资源,然后执行 Marathon 派发出来的任务并反馈任务的运行状态。

服务管理

Marathon 作为 Mesos 的一个Framework,使用Mesos提供的资源,分配给其管理的多种应用。对任何应用都能很容易的进行运行实例的数量伸缩、启动停止运行实例、修改配置、查看运行状态和日志等操作。

Marathon支持使用Docker容器运行应用,依赖Docker进行资源隔离。

网络和存储

DCOS还提供了虚拟网络(Virtual Network,基于VxLan)技术方案。可以在一个DCOS集群中划分网段,在独立的子网中运行相互独立的服务。子网间服务共享机器硬件资源的同时相互隔离。这样可以供多个团队共享一个集群,做到独立部署服务而且避免互相干扰。

DCOS还提供了持久化支持,例如可以集成AWS ESB服务,供应用跨机器共享的存储能力。典型的容器实例是无状态的,在实例发生Fail并被调度到另外一台机器上后,仍然可以连接到共享存储上继续正常服务。

通信和访问

微服务日益流行,一个应用被拆分成多个微服务后需要服务发现能力。DCOS内置了4层的VIP服务,可以在集群内部实现服务发现。应用启动时配置一个VIP地址,其他服务则可以通过该地址在DCOS中访问到它,而不用关注服务运行在哪个机器上。

同时,DCOS通过集成Marathon-LB实现了7层的服务发现,可以将服务“导出”到互联网,从而被外部访问。

优雅操控

DCOS还提供了两个易于使用的人机接口:DCOS-UI和DCOS-CLI,供运维人员进行服务的部署、管理和监控。

DCOS-Universe提供一种服务安装包管理功能,可以像安装单个软件一样部署一个服务(Service as a Software)。任何人或组织可以把分布式服务发布到公共Universe,然后DCOS管理员就可以从Universe获取服务并进行部署。使用起来和在Mac OS上安装一个WeiChat几乎没有差别。

Roadmap

统一接口

作为一个数据中心操作系统,通用的功能要像在单机上使用一样简单。DCOS的日志、监控后继会有更加统一的使用接口。

系统服务

为应用提供一个机器模式,可以在每个DCOS的机器上运行Daemon进程。这样有助实现一些Agent模式的服务,例如日志收集。

包管理增强

包管理多样化,支持dev/prod 或者 small/medium/large 等丰富可配类型。

支持包依赖管理,向操作系统的软件包管理更一步。

参考文献

The Datacenter Needs an Operating System | AMPLab – UC Berkeley

浅谈 Apache Mesos 和 Mesosphere DCOS - 推酷

jferic

Read more posts by this author.

中国浙江省杭州市

Subscribe to The Terminus Blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!