一、实践背景
1.1现网生产系统存在的问题
在中国移动内部各省市公司,由于技术迭代、设备更新的原因,设备繁杂,有x86server 、VMware虚拟机、OpenStack虚拟机以及不同厂商的物理机(如IBM Powerserver),设备与系统各异,无法整合。
在资源充裕的情况下,却面临着机器不够用。资源利用率低的困境。
详细来讲,客户面临的难题有下面几点:
①、机器资源利用率低
数据中心拥有多套业务系统执行,开发、測试到终于的产品公布。每套系统使用独立的server或虚拟机用于部署。
②机器管理成本不断攀升
server和虚拟机的数量太多难以管理,新server和应用的部署时间长,硬件维护须要数天/周的变更管理准备和数小时的维护窗体。
④、应用部署、管理、运维和升级难度大:
应用厂商众多。架构差异较大。应用部署、上线、扩容对资源需求不同,应用生命周期的管理难度大,导致运维成本居高不下。
因此,随着数据中心应用和用户对资源的需求的多样化,须要一个相似“操作系统”的统一资源管理系统来整合与协调各类资源。提升资源复用率,为客户解决现网生产系统存在的问题。
数据中心操作系统(DataCenter Operating System。简称DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件栈(software stack)。
主要功能为:
1) 为整个数据中心提供分布式调度与协调功能。统一协调各类资源,实现数据中心级的弹性伸缩能力。
2) 提供一个高效率、可靠、安全的管理数据中心的平台,确保各类资源随着应用的需求动态调度,同一时候简化应用程序的开发、部署难度。
1.2 DCOS理解
狭义DCOS:软件定义数据中心的详细实现(特指Mesos),将数据中心中的资源聚合,支持多种计算框架并行执行,提高资源利用率,实现数据中心级弹性伸缩能力。将数据中心抽象为一台巨型计算机供用户使用。
广义数据中心操作系统(DCOS):实现软件定义数据中心概念的软件组合。介于IaaS层与PaaS层。将资源从数据中心扩展到公有云、私有云,实现跨云的弹性伸缩能力,真正实现“小云”聚合成“大云”。
数据中心操作系统旨在提供一个通用的标准化运维系统,高效率可靠安全地管理数据中心,同一时候简化应用程序的开发、部署难度,协调各类资源,确保各类资源随着应用的需求动态调度。
数据中心操作系统的特征包括弹性伸缩、应用管理、敏捷、高可用等。
图1.1
1.3 DCOS发展历程
早在十多年前,Google就開始使用第一代集群管理Borg技术管理数据中心。
2009年加州大学伯克利分校AMPLab首先开发出Apache Mesos,这是一款开源集群管理软件,其核心研发成员Benjamin Hindman随后将其引入Twitter。于是Twitter、Facebook、苹果等大型IT企业開始陆续打造结合自身业务特点的基于Mesos的数据中心管理方案。
2012年,环绕Mesos开展商业活动的初创公司Mesosphere诞生。正是该公司提出了基于Mesos的DCOS,希望企业能像使用一台计算机一样使用整个数据中心。Mesos是眼下应用最广泛的资源管理系统。
二、苏研DCOS方案
2.1 技术选型
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)的自己主动扩缩 。
2.2 技术架构
以开源技术Mesos 、Marathon 、Docker、HAProxy为基础,在其上开发了DCOS控制台、资源管理模块、鉴权模块、统一日志中心、弹性扩缩容调度模块、监控管理模块、持续集成平台、应用镜像管理模块。DCOS的软件栈与功能模块例如以下:
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具有的优势在于:
①、资源整合 ,提高资源利用率;通过Mesos单数据中心物理资源整合成“巨型计算机”。通过Mesos将“小云“整合成”大云”
②、容器化,通过Docker将应用容器化
③、跨数据中心和混合云,通过Mesos实现跨数据中心的PaaS和SaaS
④、跨平台。通过容器镜像(Docker hub)仓库。实现应用的跨平台部署和执行
⑤、容错与扩展,更高效的管理系统,支持应用的横向扩展;假设一台server发生问题。它的工作负载能够自己主动迁移到别的地方
⑥、应用部署便捷、管理高效,利用容器封装。实现多种框架任务之间的隔离。保证应用的高速启动(ms级别),一次打包,到处执行。实现应用的自由迁移。
2.3 应用迁移改造实践
应用从状态的角度划分,主要分为:有状态应用与无状态应用。无状态请求是每一个请求都是与之前不论什么请求都无关的独立事务;有状态应用是HTTP协议与session、cookies等状态机制以及其它辅助的机制。
从数据流向的层次划分,能够分为:web前端、中间层、业务逻辑层与数据持久化层。
web server无状态的两种实现:
①、将状态放到请求中或者採用无状态的session,cookies框架,相应用开发有要求
②、将session等集中存储,添加session共享存储层,从而使得Web Server无状态
中间层:绝大多数中间件都不涉及状态
业务层:尽管会去读取session中的状态。可是绝大多数业务层自身都不涉及状态
数据持久化存储:存储本身就是对某种状态的记录,所以能够理解成带有状态的
应用容器化或者应用向DCOS迁移的前提条件是:无状态应用或者是有状态应用的无状态模块。
电渠业务活动系统具备典型的三层架构特征。WEB层及APP层基本採用分布式技术实现,具备进行DCOS平台应用的前提条件。DB层本次暂不予考虑。
眼下应用改造的注意点:
①、缓存server、数据库等,须要以环境变量的方式传递,而不能写在代码中。
②、应用层级通信时使用服务发现功能,不使用IP
③、docker镜像功能单一、追求极简
④、应用监听port使用固定port
⑤、数据存储放在外部
⑥、容器执行进程单一化
三、后期规划
眼下DCOS不支持存储容器化方案,须要完毕存储容器化功能,并推进弹性调度功能,资源隔离、复杂应用编排等功能。
同一时候对Kubernetes、Swarm与Mesos的集成方案进行跟踪、測试和比較,构建高效稳定的DCOS平台能力。
本文作者:中移苏研-邹能人、曹高晋
假设想了解很多其它苏研DCOS相关的信息,请关注微信!