一、实践背景

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相关的信息,请关注微信!

中移苏研DCOS实践之路完整篇的更多相关文章

  1. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...

  2. 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况

    近几年容器相关的技术大行其道,容器.docker.k8s.mesos.service mesh.serverless等名词相信大家多少都有听过,国内互联网公司无一不接触和使用相关技术. 健康之路早在2 ...

  3. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...

  4. webp图片实践之路

    最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中.传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显.估计在不久的将来,webp会成为标配. ...

  5. 《程序设计语言——实践之路》【PDF】下载

    程序设计语言--实践之路>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 本书在美国大学已有使用了十余年,目前被欧 ...

  6. 《程序设计语言——实践之路(英文第三版)》【PDF】下载

    <程序设计语言--实践之路(英文第三版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382234 内容简介 <程序设计语 ...

  7. 《程序设计语言——实践之路【PDF】下载

    <程序设计语言--实践之路[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 <程序设计语言--实践之路(第3版 ...

  8. WebP 图片实践之路

    我们会从三部分来聊聊webp这个话题. 什么是webp,它有什么用? 使用webp的常规方法以及优劣. 我们是如何用上webp的. PS:如果是对webp有一定了解的朋友,建议直接看第三部分.因为是讲 ...

  9. webp图片实践之路(转载)

    最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中.传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显.估计在不久的将来,webp会成为标配. ...

随机推荐

  1. Qcon

    http://2017.qconbeijing.com/?utm_source=tuicool&utm_medium=referral

  2. JS面向对象函数的四种调用模式

    函数的四种调用模式 概念 在 js 中,无论是函数, 还是方法, 还是事件, 还是构造器,...这些东西的本质都是函数 函数, 方法, 事件, 构造器,...只是所处的位置不同 这四种模式分别是 函数 ...

  3. spring+activity+mysql集群

     第一步:先配置好第一个activityMQ 在broker外面加入数据库的连接信息,并将mysql的mysql-connector-java.jar,即java连接mysql的jar包放入apach ...

  4. 使用Rabbitmq.client反序列化包含Mongo.Bson.ObjectId属性实体类时抛异常

         原因分析:    队列中存储的objectId属性是字符串,反序列化字符串转换成objectid类型时报错     解决方法:    1.定义ObjectIdConverter属性类,反序列 ...

  5. ORACLE查看并修改最大连接数的具体步骤

      第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes ...

  6. python 字典dict和列表list的读取速度问题, range合并

    python 字典和列表的读取速度问题 最近在进行基因组数据处理的时候,需要读取较大数据(2.7G)存入字典中,然后对被处理数据进行字典key值的匹配,在被处理文件中每次读取一行进行处理后查找是否在字 ...

  7. iOS:GitHub上值得关注的iOS开源项目

    1.AFNetworking地址:https://github.com/AFNetworking/AFNetworking用于网络请求 2.JSONKit地址:https://github.com/j ...

  8. js同比例缩放图片

    function DrawImage(ImgD, FitWidth, FitHeight) { var image = new Image(); image.src = ImgD.src; if (i ...

  9. [转载]Oracle批量执行

    FROM: http://www.cnblogs.com/wangyayun/p/4514411.html //批量添加20000条数据用时8秒. try { String url = "j ...

  10. shell中单引号、双引号、反引号的区别

    '单引号' 忽略所有特殊字符 "双引号" 忽略大部分特殊字符,除了$  ` `反引号` 输出执行结果