中移苏研数据中心操作系统(DCOS)的实践之路 – zoues

标签: | 发表时间:2017-12-26 14:53 | 作者:
出处:http://www.zoues.com

实践背景

1.1 现网生产系统存在的问题

在中国移动内部各省市公司,因为技术迭代、设备更新的原因,设备繁杂,有x86服务器 、VMware虚拟机、OpenStack虚拟机以及不同厂商的物理机(如IBM Power服务器),设备与系统各异,无法整合。在资源充裕的情况下,却面临着机器不够用,资源利用率低的困境。

具体来讲,客户面临的难题有以下几点:

①、机器资源利用率低

数据中心拥有多套业务系统运行,开发、测试到最终的产品发布,每套系统使用独立的服务器或虚拟机用于部署。

 

②机器管理成本不断攀升

服务器和虚拟机的数量太多难以管理,新服务器和应用的部署时间长,硬件维护需要数天/周的变更管理准备和数小时的维护窗口。

④、应用部署、管理、运维和升级难度大:

应用厂商众多,架构差异较大,应用部署、上线、扩容对资源需求不同,应用生命周期的管理难度大,导致运维成本居高不下。

因此,随着数据中心应用和用户对资源的需求的多样化,需要一个类似“操作系统”的统一资源管理系统来整合与协调各类资源,提升资源复用率,为客户解决现网生产系统存在的问题。

 

数据中心操作系统(DataCenter Operating System,简称DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件栈(software stack)。主要功能为:

1) 为整个数据中心提供分布式调度与协调功能,统一协调各类资源,实现数据中心级的弹性伸缩能力。

2) 提供一个高效率、可靠、安全的管理数据中心的平台,确保各类资源随着应用的需求动态调度,同时简化应用程序的开发、部署难度。

 

1.2 DCOS 理解

狭义DCOS:软件定义数据中心的具体实现(特指Mesos),将数据中心中的资源聚合,支持多种计算框架并行运行,提高资源利用率,实现数据中心级弹性伸缩能力,将数据中心抽象为一台巨型计算机供用户使用。

广义数据中心操作系统(DCOS):实现软件定义数据中心概念的软件组合,介于IaaS层与PaaS层,将资源从数据中心扩展到公有云、私有云,实现跨云的弹性伸缩能力,真正实现“小云”聚合成“大云”。

数据中心操作系统旨在提供一个通用的标准化运维系统,高效率可靠安全地管理数据中心,同时简化应用程序的开发、部署难度,协调各类资源,确保各类资源随着应用的需求动态调度。

数据中心操作系统的特征包括弹性伸缩、应用管理、敏捷、高可用等。

1

图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

图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的软件栈与功能模块如下:

3

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)仓库,实现应用的跨平台部署和运行

⑤、容错与扩展,更高效的管理系统,支持应用的横向扩展;如果一台服务器发生故障,它的工作负载可以自动迁移到别的地方

⑥、应用部署便捷、管理高效,利用容器封装,实现多种框架任务之间的隔离。保证应用的快速启动(ms级别),一次打包,到处运行,实现应用的自由迁移。

 

2.3 应用迁移 改造 实践

应用从状态的角度划分,主要分为:有状态应用与无状态应用。无状态请求是每个请求都是与之前任何请求都无关的独立事务;有状态应用是HTTP协议与session、cookies等状态机制以及其他辅助的机制。

从数据流向的层次划分,可以分为:web前端、中间层、业务逻辑层与数据持久化层。

web server无状态的两种实现:

①、将状态放到请求中或者采用无状态的session,cookies框架,对应用开发有要求

②、将session等集中存储,增加session共享存储层,从而使得Web Server无状态

中间层:绝大多数中间件都不涉及状态

业务层:虽然会去读取session中的状态,但是绝大多数业务层自身都不涉及状态

数据持久化存储:存储本身就是对某种状态的记录,所以可以理解成带有状态的

应用容器化或者应用向DCOS迁移的前提条件是:无状态应用或者是有状态应用的无状态模块。

电渠业务活动系统具备典型的三层架构特征,WEB层及APP层基本采用分布式技术实现,具备进行DCOS平台应用的前提条件,DB层本次暂不予考虑。

4

目前应用改造的注意点:

①、缓存服务器、数据库等,需要以环境变量的方式传递,而不能写在代码中。

②、应用层级通信时使用服务发现功能,不使用IP

③、docker镜像功能单一、追求极简

④、应用监听端口使用固定端口

⑤、数据存储放在外部

⑥、容器运行进程单一化

三、后期规划

目前DCOS不支持存储容器化方案,需要完成存储容器化功能,并推进弹性调度功能,资源隔离、复杂应用编排等功能。同时对Kubernetes、Swarm与Mesos的集成方案进行跟踪、测试和比较,构建高效稳定的DCOS平台能力。

 

相关 [数据中心 操作系统 dcos] 推荐:

中移苏研数据中心操作系统(DCOS)的实践之路 – zoues

- -
在中国移动内部各省市公司,因为技术迭代、设备更新的原因,设备繁杂,有x86服务器 、VMware虚拟机、OpenStack虚拟机以及不同厂商的物理机(如IBM Power服务器),设备与系统各异,无法整合. 在资源充裕的情况下,却面临着机器不够用,资源利用率低的困境. 具体来讲,客户面临的难题有以下几点:.

业务运维部门的岗位价值与DCOS

- - SegmentFault 最新的文章
通过配置文件修改一个后台参数需要登录权限,文件修改权限,甚至进程起停权限. 这些运营环境的权限需要尽可能的收归到很少的人的手里以控制风险. 业务运维初期以人工接口的方式提供服务,后期以web应用的方式提供自助服务. 如果后台开发人员做得比较完善可以直接提供web应用提供自助服务. 但是很多时候业务开发部门的主要 KPI 不是提供运维的方便性,所以使得业务运维部门需要自己去开发这些管理性质的 web 应用.

Android操作系统安全

- - CSDN博客推荐文章
        Android在迅猛发展的同时,其安全问题一直没有引起足够的重视,但在2010年6月研究人员发布Android平台的KernelRootkit以来,Android平台的安全问题引来了越来越多的关注,而同时,Android平台的恶意软件也开始流行起来.        根据以上的Android系统架构分析,可以发现在三个层面可能存在恶意软件.

Mozilla将开发独立操作系统

- ccyuling - Solidot
Mozilla宣布了一个新项目“Boot to Gecko”,旨在为开放互联网开发一种完整独立的操作系统,成为ChromeOS或Android的某种竞争对手. 源代码将发布在Github上(暂时只有README). Mozilla此举是为了推广开放Web技术,Boot to Gecko针对的不是笔记本,而是智能手机,为Android兼容设备提供基质.

五家移动操作系统盘点

- 离歌 - 互联网的那点事
这篇文章,我起草有一段日子了,现在我觉得该是时候完成它. 伴随着iPhone更新的传言、RIM的诽谤、对触摸板的既爱又恨等这些话题的出现,我认为现在就是发表看法的最好时机. 博客之间近来出现了一场大型的拔河较力,热论某些公司的命运或者某些手机操作系统的优势,又或者仅仅只是移动通讯技术的整体发展方向.

Joyent 发布 SmartOS 开源操作系统

- ArBing - vpsee.com
以 OpenSolaris 为基础架构的云计算公司 Joyent 上周发布了他们自己的操作系统 SmartOS,并在 github 上公开了其所有的源代码,很高兴看到又一个云计算厂商加入到开源的队伍. 和其他依赖 Linux 的云计算系统不同,Joyent 提供的 SmartOS 基于 illumos(SUN 被 Oracle 收购后,OpenSolaris 分裂出来的版本).

Cosmos--基于C#的操作系统

- Amom - Solidot
Shawn the R0ck 写道 "不论从MIT开放课程6.828操作系统工程(Operating System Engineering)还是实际工程中的Unix-like系统,使用C语言和少量的汇编已经是铁律一般的工程原则,虽然也有不少hacker尝试基于Lisp的OS比如试验性项目LOSAK,但都还没有大规模的工程应用.

Ubuntu发布移动版操作系统

- - Ubuntusoft
Ubuntu刚刚在其官方主页发布了移动版操作系统. 该系统完全开源免费,并且分为“普通版”和“高级版”两个版本. 其中“普通版”对手机配置的要求较低,但是功能有限. 系统采用全手势操作,屏幕每个边缘都会对应不同操作,比如短暂的在屏幕左端边缘滑动手指便可呼出程序菜单,从屏幕左端滑到右端则可以显示目前打开的应用程序,短暂的在屏幕右侧滑动手指则是类似“返回键”的功能等等.

9 个免费的云操作系统

- - 开源中国社区最新新闻
云操作系统 允许你在任何地方访问你的数据. 最基本的它可作为你的在线磁盘,用来存储任何的数据. 使用云操作系统你可以创建办公项目、编辑文档以及几乎任何你在桌面上能完成的其他事情. 这里我们像你推荐 9 个免费的云操作系统. 使用 ZeroPC 你可以访问为你提供的 1G 免费存储空间,可以连接多种不同的云计算服务,诸如:Google Drive, DropBox, 4Shared, SkyDrive 等等.

Google物联网操作系统

- -
本次,谷歌正式将其物联网Brillo系统更名为Android Things,并同时更新了通讯协议weave.. 与Android TV Android Auto和Android Wear统一名称,稳定发展. Android Things为开发者快速打造物联网设备底层系统,开发者可以使用Android API和Google服务,结合Android Studio Google Cloud Platform及Google Play来操作,已开放预览版.