云计算架构技术与实践(第2版)
上QQ阅读APP看书,第一时间看更新

第5章 面向应用敏捷化部署的Docker容器及其调度

5.1 容器典型应用场景

Docker技术的出现和迅猛发展,已成为云计算产业的新的热点。容器使用范围也由互联网厂商快速向传统企业扩展,大量传统企业开始测试和尝试部署容器云。

相比于企业对容器技术的逐步接受与认同,在如何使用容器上却并不统一,存在多种思路和诉求。容器技术开发者和社区倡导云原生应用场景,这一理念被业界普遍认可,但在实际使用中发生分化。部分企业基于容器技术,尝试新应用开发和对传统应用的改造;而有的企业在实际使用中,面临应用改造困难和人员技能变更的问题,认为不可一蹴而就,希望先以轻量级虚拟机的方式使用容器。

容器的下述技术特点,决定了容器所能发挥真正价值的应用场景。

轻量化:容器相比于虚拟机提供了更小的镜像,更快的部署速度。容器轻量化特性非常适合需要批量快速上线的应用或快速规模弹缩应用,如互联网web应用。

性能高、资源省:相比虚拟化,接近物理机的性能,系统开销大幅降低,资源利用率高。容器的高性能特性非常适合对计算资源要求较高的应用,如大数据和高性能计算应用。

跨平台:容器技术实现了OS解耦,应用一次打包,可到处运行。容器的跨平台能力非常适合作为DevOps的下层封装平台,实现应用的CI/CD流水线;容器应用可跨异构环境在不同云平台、公有云和私有云上部署,也非常适合作为混合云的平台。

细粒度:容器本身的“轻”和“小”的特性非常匹配细粒度服务对资源的诉求,与微服务化技术的发展相辅相成,可作为分布式微服务应用的最佳载体。

企业关注下一代内部IT架构变革,希望将服务作为IT核心,提升业务敏捷性,大幅降低TCO。容器成为企业应用转型很好的承载平台,针对企业的业务痛点,使用上述一种或多种特点,优化业务场景。

下面内容详细描述了容器支持的典型应用场景。

5.1.1 互联网web类应用

这是容器技术最广泛使用的场景。Web类应用通常是三层架构(见图5-1)。系统面临大量用户突发业务访问时,对于无状态的Web前端,非常适合使用容器部署。快速规模弹性伸缩Web服务节点实例数,结合ELB的分发调度,适配业务的负载变化。无状态的App服务节点,或通过无状态化改造,也可以打包为容器,提供快速弹缩能力。

图5-1 Web类应用典型部署

5.1.2 CI/CD开发测试云

Docker开源后,在开发人员和运维人员之间迅速流行起来,成为第一款获得共同认可的DevOps工具,继而成为容器的事实标准。Docker为实现DevOps的四个技术基础技术提供了完善的解决方案,分别是:分布式的开发环境、标准化的运行环境、丰富的应用镜像仓库以及持续的自动化部署(见图5-2)。

图5-2 CI/CD开发测试流水线

分布式的开发环境:Docker的分层文件系统机制,使不同的开发人员完全独立地进行开发,并最终进行文件挂载的方式搭建应用开发程序,使开发人员之间的影响最小,实现开发敏捷。

标准化的运行环境:Docker Image可以在各种支持Docker的开发、测试和生产环境中运行,而屏蔽不同环境间软硬件的差异。

丰富的应用仓库:在Docker Hub和私有镜像仓库中存储着多种类型的Docker Image,利用仓库来存储Docker镜像,快速搭建应用所需的标准化环境。

持续的自动化部署:各种Docker的编排工具,如Mesos、Kubernates工具能够支持应用生命周期管理,支持服务发现、负载均衡和灰度升级等,满足运维的应用不停机升级。

5.1.3 微服务管理平台

微服务是一种软件架构模式,此模式下应用被分解为一系列相互独立、边界明确、自主完成单一的任务的服务,服务之间解耦,可独立替换、升级和伸缩,服务间通过语言无关的轻量级接口,如网络通信(RPC、HTTP等)、消息队列等进行协同。

微服务架构将应用解耦分拆为小粒度服务模块,容器的轻量化可为微服务提供更细粒度的资源供给,有效地利用资源。服务启动快和弹缩快,也能更好地应对单服务和系统突发式的业务访问,如图5-3所示。

图5-3 微服务管理平台

5.1.4 容器主机

容器不同于虚拟化的实现方式,占用更少的系统资源,有效地提升了数据中心的资源利用率,同时利用容器快速弹性等特性,使业务系统可以灵活扩展,架构演进至微服务架构。

对于轻量级虚拟机,虚拟机管理程序对硬件设备进行抽象处理,而容器只对操作系统进行抽象处理,容器有自己的文件系统、CPU和内存,意味着容器能像虚拟机一样独立运行,却占用更少的资源,极大地提高了资源利用率。