本文以容器技术建设 PaaS(平台即服务)云平台的解决方案为例,分析其如何实现系统资源的集中管理、动态分配、监控、共享和调度,如何实现应用的统一部署和业务连续性保障,实现多数据中心的高可用,推动系统架构及流程的调整,应对云计算时代所带来的变革。
通过引进Docker、Kubernetes等技术和搭建微服务架构模式来减少对现有应用的影响,即将应用程序分割成更小的相互关联的服务,并采用容器化技术进行微服务的封装、部署、管控。这些服务围绕业务能力构建并且可独立部署,方便地为不同类型的微服务提供差异化的管理策略。
以容器技术为核心的支撑技术框架既满足当前业务支撑系统发展的实际需求,又具有支撑未来业务高速发展的技术先进性。该技术架构主要分为以下几层。
1)资源管理层
OpenStack 或裸机资源池,即 IaaS 基础设施层,提供上层获取资源的接口。
2)公共服务层
通过基于 Docker 和 Kubernetes 的容器化服务提供平台层服务,在其上部署基础服务和用户自定义的服务,并通过微服务的组合和编排组成对外能力开放平台,提供业务级的服务组合,供应用层通过 REST 接口调用。
3)应用层
提供用户访问、运维管理的入口门户,通常 以 Web 服务或 REST API 方式提供给客户端(浏览器、智能终端或外部系统)进行访问。
Docker 是容器技术的一种,它运行于 Linux宿主机上,每个运行的容器都使用操作系统的内核隔离功能,是轻量的虚拟技术,更加高效,启动速度更快,且可以屏蔽开发、测试及生产环境的区别,实现更轻松的迁移和扩展,提高开发、测试、部署、升级及维护的效率。
Kubernetes是基于容器技术、采用分布式架构的一种集群管理解决方案,它具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、 内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。
应用拆分和服务部署方式
PaaS 云平台引入微服务架构,并采用容器化技术进行微服务设计、编排、授权和配置,解除应用间的紧耦合和依赖。针对 IT 支撑系统多种多 样的应用及业务,本文根据使用频次、服务调用开销不同,采用不同策略进行划分和分布式部署。几种应用拆分方式介绍如下。
(1)针对 HTTP/soap 应用,采用开源缓存集群部署,将应用和 MySQL 数据库放在一个镜像(image)中,将会话(session)数据放在第三方 缓存,实现快速的水平扩张,可满足类似电渠查询类业务的高峰值交易量需求。
(2)针对纯计算类应用,如不涉及数据库的DCC 应用模块,通过容器化提供大量计算能力,并通过对主控端(master)的多节点部署保障其高可用性。
(3)针对 MySQL 类集群进行容器化改造,通过主从复制及共享存储备份解决数据服务的高可靠和安全性,并且可达到裸机的性能和更好的高可用性。
拆分后的微服务粒度小,轻便灵活,可实现复杂多种应用场景的敏捷交付。通过容器技术进行服务设计、编排、授权、配置,可解除应 用间的紧耦合和依赖,为业务系统升级和扩展提供了良好的技术基础,极大地提高运维效率和系统性能。
多集群资源的统一纳管
PaaS 云平台通过下述方式实现资源统一管理功能。
(1)经过证书认证之后,通过 Kubernetes API服务器对集群进行纳管,导入集群的节点数量、配置等信息,并补充机房、机架等信息。
(2)将所纳入集群和租户进行绑定,把集群分配给不同的指定租户。可为每个业务建立独立的租户,安全隔离不同租户的资源和访问权限。根据业务大小,通过分区或分集群的方式实现安全隔离,既保证各业务的独立性又保障资源的共享。
(3)租户可以继续对集群资源进行分区,部署不同的应用,实现不同配置的主机共存。租户也可以对集群资源根据应用和业务进行划域隔离,保障安全。如将 Web 类应用和 proxy 应用部署在 DMZ 和互联网域,采用 Kubernetets+Docker容器技术,具备轻量但弹性扩展需求强的特点;可将包含大量的计算类、服务类、分析类应用部署在核心区,引入 Mesos 技术搭建分布式系统内 核,构建巨大的计算集群。
通过使用 Kubernetes 多集群统一管理,后台运维人员可以很方便地了解资源情况,如系统集群数量、每个集群分配的机器数量及配置、机房条件、资源利用率等。该功能大幅度提升后台运维人员对系统的管理和监控力度,为多集群、多数据中心间的资源调配奠定基础。
多集群、多数据中心之间的高可用
PaaS云平台的多数据中心、多集群的高可用主要应用场景如下。
1、多集群的统一服务部署由 Kubernetes 管理平台自动化部署模块统一对各数据中心进行服务自动化安装部署。可以定 义同一个服务在不同数据中心的 Kubernetes 集群统一部署,并且可以定义在每个集群部署服务的容器实例的比例,如可按 6:4 的比例在集群 A 和 集群 B 上部署服务。
2、灰度升级 由 Kubernetes 管理平台自动化部署模块统一对各数据中心自动化进行服务升级。可以实现先在一部分集群部署新版本,稳定之后再平滑升级全部的节点。
3、动态集群间业务调整业务高峰期当一个数据中心容量不足时,由Kubernetes 管理平台自动进行服务动态扩展,启动容灾数据中心的部分服务来支撑业务。
4、业务高可用当主数据中心发生故障时,由 Kubernetes 管理平台自动进行容灾切换,由容灾数据中心自动 接管所有业务服务。
基于容器技术的 PaaS平台,可实现 IT 支撑系统跨多个网络域、跨多个数据中心的复杂多集群环境的集中管理,且通过多集群统一部署可大幅度提升软件新版本的上线效率。通过容器技术和立体化监控,可全方位监控各集群的资源整体利用率,并通过多集群间动态部署容器数量,实现灵活的水平扩展能力。但考虑容器技术作为一个较新的技术,在推动容器技术的标准化和规范化、实现更多应用的重构及统管、构建统一化的服务组件等方面,仍需要持续关注和研究。
作者:齐磊,张海峰,张天骁,祝好,陈旭
Linux学习指南
有收获,点个在看