专栏名称: 分布式实验室
最专业的Docker文章,最权威的Docker新闻。关注容器生态圈的发展。
目录
相关文章推荐
51好读  ›  专栏  ›  分布式实验室

DC/OS关键技术与应用场景

分布式实验室  · 公众号  · 后端  · 2017-02-22 07:46

正文

文章首先对数据中心操作系统内的主要技术,包括Mesos、Yarn、Kubernetes和容器进行了阐述。根据国内外电信运营商的现状和面临的问题,提出了一种解决方案,并对技术实现及选型建议进行了讨论。最后对电信运营商应用DC/OS关键技术的案例进行了简要介绍。

引言

随着越来越多的平台、架构、系统、组件和工具等通过开源社区、小微型初创项目而衍生,不再由IT或互联网巨头独自垄断,这为IT领域各项技术的快速、活跃发展提供了良好的温床,开源技术的迅速发展、活跃的社区力量,使得一些理念如DC/OS(数据中心操作系统)以及技术如Mesos、Kubernetes和容器等应运而生,并广泛地得到了实验和迭代改进。

DC/OS关键技术

DC/OS问世之前,如谷歌(Google)等互联网企业就内部资源调度和分配、负载,已逐步展开了探索,形成了一些如Borg等的生产化项目。而在2014年,由Mesosphere实现了第一个可进行统一调度所有数据中心及云资源的软件堆栈,并称为DC/OS。目前已投入实际生产使用的DC/OS包括Google的Borg/Omega系统和推特(Twitter)、苹果(Apple)、网飞(Netflix)等公司基于Mesos构建的系统。而在2016年4月,Mesosphere将自己的DC/OS代码进行了开源,其中包含超过30项组件技术,最为典型的有Apache Mesos与Marathon。下文将对可用于DC/OS构建的开源技术包括Mesos、Yarn、Kubernetes和Docker进行简要阐述。

Mesos

Mesos是开源资源统一管理和调度平台,其实现逻辑如图1所示,由美国加州大学伯克利分校AMPLab开发,后应用于Twitter、Apple、Netflix等企业。其亮点在于两层调度的架构可以做到“大集群”、减小“中心节点”的压力以及在同一个集群中可接入多种应用、框架,提高分布式集群的利用率。

由于Mesos上的元数据可通过各个计算节点重新注册而进行重构,因此可通过Zookeeper解决单点故障问题。轻量级的Mesos架构包括以下4个组件。

Yarn

Yarn是新的Hadoop MapReduce框架,实现思路如图2所示。其主要为了解决Hadoop1.0扩展性较差、不支持多计算框架的问题,本质是一个资源管理架构。Yarn减小了JobTracker的资源消耗,并且让监测每一个工作子任务状态的程序更安全、更分布式化;对于资源的表示以内存为单位,较旧版本更合理。其亮点在于可以更快地进行MapReduce计算,实现对多架构的支持以及架构升级的简便性。

较1代MapReduce的设计思路,Yarn将JobTracker两个主要的功能,即资源管理和任务调度/监控,分解为独立组件资源管理器和应用管理节点。资源管理器全局管理所有应用程序计算资源的分配,每一个应用的应用管理节点负责相应的调度和协调。

Kubernetes

Kubernetes是Google多年大规模容器管理技术的开源版本,其实现思路如图3所示。其亮点在于具有容器编排能力、相对轻量级及易于管理运行Docker的容器。Kubernetes使用Docker对程序进行包装、实例化、运行,并以集群的方式运行、管理跨机器的容器,同时解决了Docker跨机器容器之间的通信问题。


Kubernetes框架包含以下组件。

首先,Kubecfg将请求如创建Pod等,发送给Kubernetes应用客户端,并由其将该请求发送给API服务器。API服务器根据请求类型(如创建Pod时存储类型是pods)并依此选择何种REST存储API对请求作出处理。REST存储API对请求做相应的处理,并将处理结果存入高可用键值存储系统(ETCD)中,在API服务器响应Kubecfg的请求后,调度器会根据Kubernetes应用客户端获取集群中运行的Pod及从属节点的信息。依据从Kubernetes应用客户端获取的信息,调度器将未分发的Pod分发到可用的从属节点上。

Docker

Docker 是一个开源的应用容器引擎,为开发者提供一个可将应用及依赖包打包至一个可移植的容器环境中,并发布到任意流行的 Linux 机器上。容器采用沙箱机制,容器间不存在接口。其亮点在于快速便捷的单次构建+导出运行模式及愈加丰富的生态系统。

Docker采用C/S模式,使用远程API来管理和创建Docker容器。Docker容器通过 Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。Docker采用 C/S架构 Docker Daemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过Socket或者RESTful API来进行通信。Docker Daemon一般在宿主主机后台运行,等待接收来自客户端的消息。Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟Docker Daemon交互。

电信运营商DC/OS实现思路

现状与问题

云计算、大数据相关技术的普及推进了企业云化的建设和发展。虽然大部分国内外电信运营商已实现了IaaS资源池化和部分PaaS及应用资源池化,能够满足生产供给和部署。但大部分运营商的数据中心采用分隔式集群实现思路,包括以开源Yarn或定制版大数据资源调度,承载数据类作业的集群以及数据库、缓存集群等;缺乏迫切资源的跨域调度能力;同时目前的运营系统还存在的资源运行不均衡、时段运行不均衡等问题,具体包括:

鉴于此,电信运营商需设计、研发一种架构,以解决资源调度等现实问题并提供微服务化的实现环境。

功能结构

一种可满足电信运营商需求的DC/OS的功能实现如图4所示,分为4部分内容,分别是业务调度层、应用服务层、资源管理层以及自动化运营工具。







请到「今天看啥」查看全文