在中国移动内部各省市公司,因为技术迭代、设备更新的原因,设备繁杂,有x86服务器 、VMware虚拟机、OpenStack虚拟机以及不同厂商的物理机(如IBM Power服务器),设备与系统各异,无法整合。在资源充裕的情况下,却面临着机器不够用,资源利用率低的困境。
具体来讲,客户面临的难题有以下几点:
因此,随着数据中心应用和用户对资源的需求的多样化,需要一个类似“操作系统”的统一资源管理系统来整合与协调各类资源,提升资源复用率,为客户解决现网生产系统存在的问题。
数据中心操作系统(DataCenter Operating System,简称DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件栈(Software Stack)。主要功能为:
狭义DCOS:软件定义数据中心的具体实现(特指Mesos),将数据中心中的资源聚合,支持多种计算框架并行运行,提高资源利用率,实现数据中心级弹性伸缩能力,将数据中心抽象为一台巨型计算机供用户使用。
广义DCOS:实现软件定义数据中心概念的软件组合,介于IaaS层与PaaS层,将资源从数据中心扩展到公有云、私有云,实现跨云的弹性伸缩能力,真正实现“小云”聚合成“大云”。
数据中心操作系统旨在提供一个通用的标准化运维系统,高效率可靠安全地管理数据中心,同时简化应用程序的开发、部署难度,协调各类资源,确保各类资源随着应用的需求动态调度。
数据中心操作系统的特征包括弹性伸缩、应用管理、敏捷、高可用等。
图 1.1
早在十多年前,Google就开始使用第一代集群管理Borg技术管理数据中心。
2009年加州大学伯克利分校AMPLab首先开发出Apache Mesos,这是一款开源集群管理软件,其核心研发成员Benjamin Hindman随后将其引入Twitter,于是Twitter、Facebook、苹果等大型IT企业开始陆续打造结合自身业务特点的基于Mesos的数据中心管理方案。
2012年,围绕Mesos开展商业活动的初创公司Mesosphere诞生。正是该公司提出了基于Mesos的DCOS,希望企业能像使用一台计算机一样使用整个数据中心。Mesos是目前应用最广泛的资源管理系统。
Mesos由加州大学伯克利分校AMPLab开发,后在Twitter推广使用,被广泛用作数据中心操作系统的kernel。Mesos架构如图2.1所示。Mesos中将任务调度和资源分配相分离。任务调度是Mesos的核心,而调度框架则负责实现具体的任务调度。Mesos架构中包含了Master和Slave节点。Mesos Master负责将资源分配给各个框架(如Hadoop框架),而各个框架的Scheduler进一步将资源分配给各个Mesos Slave节点并通知Mesos Slave执行相关Task任务,Mesos Slave接到通知后根据各个框架的Executor最终执行相关Task任务。
图2.1
Marathon是一个Mesos框架,能够支持运行长服务,比如Web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如 Tomcat Play等等,可以集群的多进程管理,实现服务的发现,为部署提供REST API服务、SSL与基础认证、配置约束,通过 HAProxy、 DNS 实现服务发现和负载平衡,可定制化监控策略实现Task(一个App对应多个 Task)的自动扩缩 。
以开源技术Mesos 、Marathon 、Docker、HAProxy为基础,在其上开发了DCOS控制台、资源管理模块、鉴权模块、统一日志中心、弹性扩缩容调度模块、监控管理模块、持续集成平台、应用镜像管理模块。DCOS的软件栈与功能模块如下:
图2.2
Mesos:作为DCOS的核心组件之一,作用相当于Linux内核,管理着数据中心所有的CPU、内存以及储存等物理资源,实现资源的统一管理和分配。
Marathon:作为DCOS基础组件之一,相当于Linux中Iinit/systemd进程,管理DCOS中其他的软件包,实现安装、卸载其他框架和应用的功能。
Haproxy、Etcd、ConfD:使用ETC的和ConfD实现DCOS内应用的服务自动注册与发现,配合使用Haproxy作为负载均衡器,实现应用的动态引流和负载均衡。
Kubernetes:Kubernetes是Google开源的容器编排系统,现已能够作为Mesos的框架很好地与Mesos融合使用,在苏研的方案中也作为一个可选的组件供用户使用。
大数据服务框架:此外还可以在DCOS运行一些大数据框架如Kafka、Spark、Hadoop,用于大数据的处理与分析。
DCOS Manager Platform:DCOS内核如基础软件Mesos和Marathon对管理员和用户透明,并不直接操作。所有用户通过DCOS Manager Platform进行操作,管理DCOS中所有应用的生命周期和数据中心的运维。这样的设计保证了底层软件的变更不会过多的影响用户的使用习惯。
其他:如Chronos,用于批处理任务的执行。
DCOS具有的优势在于:
应用从状态的角度划分,主要分为:有状态应用与无状态应用。无状态请求是每个请求都是与之前任何请求都无关的独立事务;有状态应用是HTTP协议与session、cookies等状态机制以及其他辅助的机制。
从数据流向的层次划分,可以分为:Web前端、中间层、业务逻辑层与数据持久化层。
Web Server无状态的两种实现:
中间层:绝大多数中间件都不涉及状态。
业务层:虽然会去读取session中的状态,但是绝大多数业务层自身都不涉及状态。
数据持久化存储:存储本身就是对某种状态的记录,所以可以理解成带有状态的。
应用容器化或者应用向DCOS迁移的前提条件是:无状态应用或者是有状态应用的无状态模块。
电渠业务活动系统具备典型的三层架构特征,WEB层及APP层基本采用分布式技术实现,具备进行DCOS平台应用的前提条件,DB层本次暂不予考虑。
图2.3
目前应用改造的注意点:
目前DCOS不支持存储容器化方案,需要完成存储容器化功能,并推进弹性调度功能,资源隔离、复杂应用编排等功能。同时对Kubernetes、Swarm与Mesos的集成方案进行跟踪、测试和比较,构建高效稳定的DCOS平台能力。
原文链接: 中移苏研数据中心操作系统(DCOS)的实践之路 。