目前行业里针对容器相关的开源技术标准化组织主要有两个:OCI和CNCF。其中OCI由Docker公司倡议发起,旨在定义容器运行引擎和容器应用镜像的相关技术规范;而CNCF由Google发起,目标是推动以容器为基础的云原生应用架构模式以及相关的各项技术,其中 Google 已经将 Google 自身的“DCOS”系统Kubernetes捐献给CNCF,Google每年仍会投入大量工程师全职开发Kubernetes,但Kubernetes已经完全属于CNCF基金会,因此可以把Kubernetes和CNCF基金会的关系类比为OpenStack和OpenStack基金会的关系。
以Docker为代表的容器对应用提供了良好的兼容性,是云计算未来发展的关键技术之一。从2013年Docker推出以来,容器技术经历了四个阶段:第一个阶段是2013年,主要还是应用在开发工具方面;第二个阶段是2014年,开发者开始尝试在生产环境中支持容器,提供服务器运行时环境,标志性事件是 2014 年6月Docker1.0版本的发布以及年底推出的Docker Machine、Swarm、Compose 三剑客;第三阶段是2015年,容器真正部署进入了生产环境中,并出现了各种容器平台和管理工具;第四阶段就是今年,开始实现容器的标准化和微服务化,并且开始全面发力进入企业级市场。图B.1是Docker截止今年上半年的发展历程。
此外2016年下半年Docker最大的热点就是Docker1.12版本的发布,该版本引入了内置编排机制,Docker1.12通过Docker Swarm命令实现了容器集群,可实现一个大系统的部署。
Apache Mesos系统作为一个集群资源管理调度系统,可以用来管理Docker 集群。同其他大部分分布式系统一样,Mesos 为了简化设计,也是采用了 Master/Slave 结构;为了解决 Master 单点故障,将 Master 做得尽可能地轻量级,其上面所有的元数据可以通过各个 Slave 重新注册而进行重构,故很容易通过 Zookeeper 解决该单点故障问题。 Mesos 可以轻松支持 Hadoop,MPI,Spark 等计算框架,并支持在同一集群下的资源混用;同时,Mesos 和 Docker 可以做到无缝结合,通过 Marathon 可提交服务性应用,通过 Chronos 可提交批处理性应用。
Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。
其优点包括:应用轻量级;支持公有云、私有云、混合云部署;功能模块化,各功能模块可插拔、可挂接、可组合;支持容器自动恢复、自动重启、自动复制。
Swarm 项目是 Docker 公司发布的容器管理工具,用来提供容器集群服务,目的是更好的帮助用户管理多个Docker Engine,方便用户使用,像使用Docker Engine一样使用容器集群服务。
Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群对外以 Docker API 接口呈现,这样带来的好处是,如果现有系统使用 Docker Engine,则可以平滑将Docker Engine切到Swarm上,无需改动现有系统。Swarm 对用户来说,之前使用 Docker 的经验可以继承过来。同时 Swarm 本身专注于Docker集群管理,非常轻量,占用资源也非常少。
Hyper是一家中国国内的开源软件创业企业。Hyper的主要项目包括:
HyperContainer:Linux上的虚拟化容器,结合了虚拟化和容器两者的优势,其特点可以概括为“Fast as Container, Secure as VM”;
runV:OCI认可的虚拟化容器实现,受到了行业的广泛支持,其中包括为,Google,IBM,Intel,思科等等;
Hypernetes:融合了 Kubernetes 和 OpenStack 的多租户、安全的 Kubernetes版本,可以用来提供公有容器云服务。
Harbor是由VMware中国研发团队负责开发的开源企业级容器Registry项目。Harbor可帮助用户迅速搭建企业级的Registry服务。它提供了简单易用的管理图形界面,基于角色的访问控制(Role Based Access Control)、镜像远程复制(同步)、AD/LDAP集成,以及审计日志等企业用户需求的功能,同时还原生支持中文,深受中国用户的喜爱。
该项目推出仅仅5多个月,在GitHub 获得了较多的点赞和下载数,社区积 极参与开发,有2/3的代码贡献着来自全球各地。Harbor采用商业友好的Apache 2许可协议,许多厂商和用户已经把Harbor开源项目集成到了自己的解决方案中,大大推动了容器应用在国内的普及。
项目地址:https://github.com/vmware/harbor
Open DC/OS(https://dcos.io)是Mesosphere公司发布的商业DC/OS(DataCenter Operating System)的开源版本,使用Mesos作为其内核。DC/OS 以现代操作系统为设计原型,旨在为数据中心提供一个开箱即用,以及和现代操作系统一样方便易用的接口:CLI、GUI、软件包管理工具、服务发现等。
Open DC/OS的架构也和现代操作系统极为相似。以Mesos为内核,拥有一个Marathon作为meta-framework,其作用相当于现代操作系统中的init或systemd,包含容器编排、服务发现、网络、存储、大数据等一系列开源或商业的解决方案,并可通过一键部署的方式安装这些服务。
Open DC/OS合作伙伴包括:HP、Microsoft、Oracle、IBM、EMC等,社区主要的代码贡献者现在主要为Mesosphere、IBM等。
OpenStack 致力于物理资源的编排调度,容器可以可以看作轻量级的计算资源,所以OpenStack欲将容器治于帐下。先有NOVA DOCKER DRIVER的先行者,再有NOVA HEAT 插件,但是这些项目都有缺陷没法实现对容器的完美调度编排,乃至最新Newton上的Magnum项目,支持Kubernets、Mesos、Docker Swarm集群,OpenStack正在一步步接近对容器编排调度的目标。 反过来,容器致力于云计算时代新式应用的打包封装和运行管理,OpenStack 本身就是一个非常典型的云应用,天生微服务化和组件化,先后有多家社区和公司宣布将对OpenStack进行容器化发布,预计不久的将来,容器仓库中就将出现各版本的OpenStack镜像。这对OpenStack本身的发展也是一个有利的助推器,将享受容器化带来的种种便利,如一键实现部署更新,集群高可用性,等等。容器和OpenStack将形成你中有我,我中有你,齐头并进的良性发展局面。
金融客户业务系统数量众多,环境管理问题日益突出。Docker作为开源容 器虚拟化技术,具有轻量级、标准化的特点,发展势头迅猛。由Docker发展到容器云,某金融客户的目标是建设有效的环境治理机制,规范环境的使用过程。同时,针对各业务系统运维需求,从交付、部署到监控等各个方面实现标准化运维,做到自动化运维。
需求分析:
项目需求具体包括:
—— 基于容器云形成有效的环境治理方案;
—— 实践DevOps,建立高效的自动化软件研发平台;
解决方案:
客户结合容器及分布式资源调度技术,构建了轻量级云平台,实现统一的资源管理、统一的软件发布管理、统一的软件监控平台和统一的日志中心。 目前容器云平台已完成开发、集成、仿真、预发布、生产五大环境建设;实现界面化部署和细粒度的资源分配;做到对集群、主机、进程的多层监控体系。该平台上已发布高效研发质量平台和业务监测平台,实现应用的稳定运行。
在容器技术落地的过程中,建设云平台只是个开端,在使用云平台的过程中,对软件交付和开发的技术又提出了新的要求——那就是云原生应用。客户对应用进行了无状态改造,采用前后端分离的轻架构开发模式,最终演变为微服务架构。
某国有大型能源行业IT基础架构部署方式上采取按项目集中式部署。因此软硬件紧密耦合,导致业务部署周期长、资源利用率低。伴随物联网和互联网应用的快速发展,又推出了智能电表、手机买电客户端等互联网特点的应用,并且大力引入大数据服务。而基础架构支撑业务负载变化能力不足,动态扩展和回收能力无法满足业务全天候弹性需求,运维复杂度和成本居高不下的问题凸现。容器改造后的系统提供了PaaS平台技术支撑,在原有容器云产品的基础上与OpenStack进行了深入集成,提供了完整的云环境治理管控平台能力,在一个系统界面下就可以完成所有操作,不仅提高了国网的IT管理运维能力,也提升了国网信息化项目交付的自动化、标准化水平。
需求分析:
—— 实践DevOps,建立高效的自动化软件研发平台
—— 统一技术路线,规范软件开发过程,优化资源配置
—— 落地微服务架构,利用先进架构促进业务创新
—— 基于微服务架构,建设业务监测平台,监测业务流程点,保障安全运行
解决方案:
一、 与 OpenStack 集成容器集群管理
通过 OpenStack Magnum 组件,调用 Heat 编排模板,创建虚拟资源环境,调用API,完成对集群的部署操作。
二、 平台账户统一管理
提供多租户能力,使得每个用户可管理自己的虚拟资源、容器集群以及应用。
三、 多环境、多应用的 Devops 流水线
借助云操作系统打通开发、测试和生产环境的流水线。在云操作系统环境下,开发人员提交的测试环境的代码,自动化构建成生产标准容器镜像;同时快速构建拟真的测试环境,自动部署进行应用测试,保证测试效果。测试验证后的镜像一键发布到生产环 境,并且支持灰度发布和快速回滚,大大降低了发布的风险。
(本案例由央视国际网络有限公司提供)
案例介绍:
API项目是央视网的一个重要的应用,作为央视影音项目中的数据提供系统,承载全网对外动态数据,融合来自不同平台、不同类型的数据,以丰富的形式对外提供数据接口支持。支撑着央视网 旗下的央视网门户、央视影音、央视新闻、央视体育等众多业务。 使用容器化平台来运行API业务后,实现了API的快速部署,秒级扩容,极大的方便了大活动场景下的扩容需求。容器化较传统虚拟化颗粒度更小,提高了服务器资源的利用率,降低公司的运营成本。同时容器化平台实现Devops流程,持续集成、持续发布,简化了运维和开发人员的工作流程,减少了业务的交付周期,提高了业务的扩展性。
需求分析:
央视网每年都要经历多次重要活动的播出重保工作,例如阅兵、世界杯、奥运会、春晚等。活动期间系统的重要保障:“高安全、高可用、弹性扩容”。我们前期需要对业务进行大规模扩容并且在活动期间可能会遇到的资源问题做出快速响应,所以需要快速的应对这种扩展需求。我们急切需求一种快速的扩容,缩容方式,来应对活动期间的资源需求及活动后的资源回收。
解决方案:
- API逻辑架构和规模
逻辑构架是五层结构,分为前端、接口层缓存、接口、数据库缓存、数据库,如图D.1。
- 容器化目标
• 对业务进行解耦,将业务拆分成独立的模块。
• 秒级横向扩容能力,快速响应活动期间的突发性流量。
• 屏蔽底层异构,实现混合云无缝部署。
• 无手工操作,从代码到线上环境发布,上线时间大大缩短。
• 提供一致性的测试和开发环境。
• 灰度发布、A/B测试降低快速发布带来的风险。- 容器化管理
(1) 平台管理
利用mesos资源管理框架及marathon调度框架打造出高可用的容器化管
理平台,实现容器的秒级扩容,快速部署。
(2) 日志管理
利用ELK日志管理平台将容器日志统一的存储与分析,构建出可视化的日
志分析平台。
(3) 服务注册
利用Bamboo和zookeeper构建服务注册中心,实现节点和容器的自动发现及注册,配置的自动加载,无需人工干预。
(本案例由Hyper提供)
案例简介:
Hyper.sh是一个基于 Hyper 虚拟化容器技术的公有容器云服务。相比基于 VM 的IaaS,Hyper CaaS 有以下优势:
• 秒级应用部署:在 IaaS 里,VM 启动一般需要几十秒,而 Hyper CaaS 里只需要3-5秒;
• 跨云:不同的 IaaS 使用的 VM 镜像格式往往不同,这使得用户不能通过统一的 VM 镜像实现通用跨云部署,而 Hyper CaaS 由于借助了 Docker 镜像,可以使用户在任何云中实现完全无缝的迁移;
• 极致弹性:在 IaaS 里,实现 VM 的弹性扩展需要分钟级,否则客户就必
须实现启动 VM等待(白花钱),而 Hyper CaaS完全满足秒级弹性扩展,帮助应用在最快时间内扩充容量,无缝化解流量高峰;
• 成本低:相比传统 IaaS,Hyper CaaS 只需1/3-1/2的成本;
• 极低运维:Hyper CaaS 能够极大简化运维工作,降低管理复杂度,使得
用户能够专注于业务应用本身。
相比传统 PaaS,Hyper CaaS 有一下优势:
• 安全:由于 Hyper 拥有 VM 级别的安全隔离性,相对于传统 PaaS,这最大程度保证了用户数据和应用的安全;
• 兼容性:PaaS 一直以来的弱项在于对应用的兼容性,往往需要应用代码进行修改,以适配 PaaS 的限制;Hyper CaaS 支持任何 Docker 镜像,
对应用没有任何限制,也无需修改任何代码。
需求分析:
传统上,我们经常把云计算分为IaaS,PaaS 和 SaaS 三大类。而容器技术的出现催生了Container-as-a-Service(CaaS)服务的兴起和火爆。 现有CaaS一般是将容器运行在 IaaS 平台的 VM 之上,通过 VM+Container 的组合提供服务。这种架构在真正生产环境中会提高运维复杂度,不仅需要管理 IaaS 的 VM资源,同时还要管理 VM 中的容器。
解决方案:
Hyper这种新型的安全容器能够解决VM+Container 的问题,使得CaaS达到 IaaS 的安全性兼容性,同时兼具 PaaS 的敏捷性易用性,如图D.2。Hyper是基于虚拟化技术,不仅具有容器的敏捷、轻量、快速启动的特性,还具备与传统VM相同的安全性。
此外,Hyper 的虚拟化本质还使得它能很容易和其他虚拟化生态的模块进行集成,例如分布式存储、SDN 网络系统,从而打造面向容器,原生的容器 IaaS 服务。
案例介绍:
中国移动某省随着电信能力逐步对外开放以及互联网化的“秒杀”、“抢红包” 等常态业务需求增多,原有系统存在应用环境需独立安装、应用无法动态扩展、无法多应用共享和自动扩展、应用无法快速部署迭代等诸多问题。 该项目采用容器技术对运营商包括掌上营业厅、网上营业厅、网上商城等业务进行优化改造,对能力开放平台、Web门户以及其他平台门户进行整合,提高了系统在秒杀、团购等业务场景下的快速扩展能力和降低大规模集群管理复杂度的能力,实现了更快速的交付和部署、更高效的资源利用率与及时的业务响应、更自动化的运维、更高的业务可用性,改善了用户体验。
需求分析:
为完善用户第三代业务支撑系统弹性部署方案,提升系统弹性伸缩能力,
本容器解决方案满足了用户业务需求,性能上实现对200万注册用户及10-50万并发用户的支撑。主要建设内容包括:应用容器化、数据库分布式改造;容器管理平台建设;云管理(资源调度)平台配合扩容改造;硬件扩容改造
解决方案:
容器管理平台整体分为三层,分别为系统管理门户、容器及应用管理平台及底层资源管理,如图D.3。
图D.3 容器管理平台功能架构图
容器管理平台核心基于Kubernetes构建,外围模块采取开源+自研开发,主要包括以下子系统:
应用、容器管理:基Kubernetes增强,主要提供集群管理,资源调度,应用管理,应用编排,容器扩缩容,灰度发布,应用监控等核心功能;
镜像管理:基于开源Docker Registry构建,支持多仓库、私有/公有仓库部署,提供镜像上传、存储、下载,分发及版本管理等功能;
运维与监控管理:基于OpenStack ceilometer等增强开发;
日志管理:主要面向主机、应用、容器及各种系统服务的日志统一收集、存储和检索系统,基于ELK方案实现;
租户/用户、权限管理:基于OpenStack KeyStone增强开发,与其他子系统包括底层IaaS平台集成。
计算资源、存储、网络管理:基于Kubernetes on Mesos方案实现,
小规模系统部署直接使用Kubernetes,采用OpenStack cinder来动态管理容器的持久化存储;网络采用Calico实现网络隔离、IP管理等功能。
该教育集团是中国最大的网络教育运营机构,和全国50 多个大学、400多家教育机构合作,为超过50万名学员提供在线学历教育、职业教育等各种在线课程。为了给用户提供更全面和优质的体验,该教育集团希望搭建一个教育云平台、以便合作院校、培训机构能够将其应用部署在该平台,该平台需要具备高弹性、高动态的特性,可以秒间对容器进行横向扩展,轻松应对流量高峰,满足线上业务需要。
需求分析:
该教育机构提供的业务是在线教育服务,业务模式决定了用户的访问量波动非常大,只有IT系统具备高可扩展性才能够给业务提供强大的支撑,这不但要求在软件架构设计上保证可扩展,同时要求运维能力也做到“可扩展”,需要运维团队能够在短时间内对服务进行快速扩容和缩容。 采用变成微服务架构后,代码的变更和部署更加频繁,经常因为测试和生产环境不一致而发生故障,严重影响了产品的用户体验。系统由多达几十个微服务组成。100多人的研发团队同时进行十几个项目,每个项目都需要至少三个环境:开发、集成测试和 UAT 环境。搭建、维护众多的开发、测试环境运维工作量巨大。 该教育机构需要快速通过测试环境平滑迁移到生产环境,且能够做灰度发布,监控到系统异常能够快速回滚到之前的版本。
解决方案:
在互联网+的背景下,利用快速迭代和持续创新保持领先地位,这家教育机构开始转向微服务架构,使用 Docker 镜像作为交付标准,通过编写Dockerfile,开发和运维人员共同定义编译和生产运行环境,容器云平台提供的持续集成/持续发布功能统一生成和发布镜像,使用容器的服务编排功能搭建各种版本集的运行环境,通过容器云平台把所有线上服务进行统一运维、管理。
项目介绍:
客户是互联网在线教育领先企业。该公司的业务目前处于急速扩张期,对后台系统的快速弹性、运维自动化程度、系统耦合程度都提出了较大的挑战。传统方式下,需要新建运维系统、业务系统重构等方式才能解决,而引入阿里云的容器云解决方案后,该公司2名运维工程师基于阿里云容器服务构建统一的开发测试运维系统并支撑新的业务系统在1个多月的时间上线,实现了向微服务架构的快速转型;通过持续集成和持续部署,提升了开发运维的自动化水平,提高了产品开发迭代的速度,提高了业务系统的高可用性。同时资源利用率从30%左右提高到60%左右,极大降低了公司IT成本。
需求分析:
通过对公司的业务进行分析,挖掘出该公司的业务痛点主要聚焦在以下3方面:a)运维自动化水平。希望能借助第三方服务完成自动化运维系统的构建,提高DevOps水平。b)业务系统之间的耦合度。希望通过容器来推动微服务的改造,以便更好地支持公司业务发展需要。c)资源的弹性伸缩。希望能够构建一个弹性伸缩的开发测试管理平台,既满足高峰期对资源的需求,又提高整体的资源利用率,降低公司成本。
解决方案:
通过对客户需求的分析调研,我们提出了完整的基于阿里云容器服务的微服务架构来解决应用系统紧耦合的问题,提出了基于阿里云容器服务的DevOps方案来解决持续集成和持续交付的问题。其中,基于阿里云容器服务的微服务架构如图D.4所示:
图D.4 基于容器服务的微服务架构为了帮助客户提升开发效率,优化开发流程,提供了基于阿里云容器服务的DevOps 方案,通过内置的容器化 Jenkins 模版,为客户提供了从开发、构建到运维的持续集成持续交付的能力支撑。 总的来说,根据客户应用系统的实际状况,我们总结了多种模式,通过基础镜像的构建、利用DevOps流程自动构建应用镜像,应用的微服务化拆分等,完成了客户已有应用系统服务化改造,根据现存服务和新开发服务的不同业务属性提供了相应的服务间依赖定义和路由方案。容器服务提供了和阿里云平台产品的深度集成和优化,充分利用的阿里云平台丰富强大的能力,为客户提供了完整的端到端的和开发语言无关的微服务解决方案。