中国移动一级业务支撑系统是整个中国移动的集中管理和一点对外的门户,包括网状网、BBOSS、一级营销、内容计费、一级客服、VGOP、电渠等多个业务支撑系统,各系统呈烟囱化建设。在小型机时代由于主机集成度高、性能稳定因此数量较少,多项目集群建设、运维尚能保持平稳。但随着系统X86化逐步推进,多项目集群中分别管理的主机、网络、存储等资源数量成几何级数增长,对项目建设、运维开发等各个流程都带来颠覆性挑战,现分析各类挑战如下。
在资源层面,各个项目的资源分散散布在各个数据中心和私有云里,不能统一管理,每个项目都有独立的资源,分布在不同的机房,特别是网状网和内容计费分布在31个省,对跨数据中心的资源和系统统一管理难度较大。
在网络层面,每个项目都跨多个网络域,如核心域、DMZ域和互联网域,之间有多层防火墙隔离,不同系统的安全等级要求不同,不同域的数据访问对安全控制的要求也各不相同。
在技术层面,缺乏统一的技术和平台实现业务能力的快速扩展,尤其是无法满足互联网业务发展带来的剧烈业务波动业务快速上线和弹性伸缩能力差。各项目采用的技术和框架各异。有的适合容器化,有的适合直接在小机上运行。底层无法直接进行技术复用和共享,需要针对具体情况进行分析和提出解决方案。
鉴于在以上多种复杂环境下,业务支撑中心要实现对多系统、多资源、多网络、多数据中心、多技术架构的统一管理,必须构建中国移动业务支撑云平台来进行进一步的能力提升,实现对多项目下多集群的统一管理。
多集群统一管理是基于中国移动业务支撑云平台的基础上构建的,以Docker、Kubernetes、Mesos、Ansible为核心支撑技术框架来实现,中国移动业务支撑云平台整体架构视图如下所示。
(点击放大图像)
该架构方案既满足了适用于容器化应用的服务统一管理、又满足了不适于容器化的Hadoop等服务和基于小机类的应用服务的统一访问和统一管理,是根据当前中国移业务支撑系统现状量身定制,既适合当前业务支撑系统发展的实际需求,又具有支撑未来业务高速发展的技术先进性。
在中国移动业务支撑云平台多集群管理的实践中,我们一直在思考怎样的多集群管理模式最适合移动总部的系统,是大一统的集中PaaS集群管理平台还是采用松耦合的联邦式集群管理模式。移动总部一级业务支撑系统都是大型项目,每个项目业务特点和技术构架都不一样,都有大量主机,分布在业支机房和资源池,每个系统均跨多个网络域包含多个集群,像网状网和内容计费项目集群还跨31个省。既能保持各个项目的灵活性,构架不受冲击,又能实现集中式的资源和应用管理是PaaS多集群管理平台的设计原则。
因此我们最终采用了Cluster Federation(集群联盟)的模式对各项目的多集群进行统一管理。采用此方式对各个项目的影响最小,系统不用做任何改动,同时可以实现资源集中管理和统一服务调度,集中的管理包含镜像管理、应用管理、配置管理、资源管理、监控管理等。多集群统一管理架构设计如下图所示。
(点击放大图像)
结合Kubernetes容器集群管理的优秀技术,通过自主研发的多集群管理软件。实现了Mesos+Kubernetes多集群的统一管理,涵盖以下典型应用场景。
在kubernetets集群管理平台中为每个项目建立独立的租户,安全隔离不同租户的资源和访问权限。通过分区和分集群的方式即保持各项目的独立性又保持资源的共享。为大的项目建立独立的集群,小的项目通过分区实现安全隔离。共享资源统一管理多个项目如下图所示。
(点击放大图像)
对于DMZ域和互联网域部署的一般都是Web类应用和Proxy应用,比较轻量但弹性扩展需求强,适合部署Kubernetets+Docker。
对于核心域包含大量的计算类、服务类、分析类应用,适合部署Mesos+Kubernetes+Docker。
跨多网络域项目的多集群统一管理如下图所示。
(点击放大图像)
中国移动业务支撑系统跨多个数据中心,可以对多数据中心实现统一的应用镜像管理、统一的应用部署和服务的调度,以及应用的快速容灾调度。跨IP承载网的多数据中心统一管理如下图所示。
(点击放大图像)
对于一个多集群的PaaS管理平台,我们从以下方面进行了详细的方案分析和设计实现。
(点击放大图像)
主要包含安全集中控制、资源统一管理、镜像统一管理、应用统一管理、配置统一管理和统一的监控管理。在多集群的模式下,每一个功能都会变得非常复杂。下面就每个功能实现做详细的描述。
联合多集群模式下安全管控是要考虑的一个非常复杂的因素,需要考虑平台管理员,集群管理员,普通用户等多个角色。权限分配也很复杂。
考虑以上问题,我们在多集群PaaS管理平台中,通过租户、集群、用户三级安全管理,实现统一PaaS平台多集群管理的安全集中管控,如下图所示。
(点击放大图像)
对于统一PaaS平台来说,最主要的功能就是对资源的统一的管控,包含有多少个集群,每个集群多少台机器,都分布在哪个机房,机器配置情况如何,目前的可用率怎么样,怎么去集群间调配资源。因此,统一PaaS资源管理平台实现了以下的资源统一管理功能。
设计方案和系统实现如下图所示。
(点击放大图像)
镜像的统一管理是多集群模式下的一个非常重要的功能。统一PaaS平台需要对镜像做集中的管控,但是又要考虑镜像部署的效率。因此,在统一PaaS平台中采用了两级镜像的构架。
设计方案和系统实现如下图所示。
(点击放大图像)
多集群情况下的应用部署需要考虑的情况会比较复杂。
针对这些要求,统一PaaS平台对应用部署功能进行了改进。
用户定义完应用之后,点击部署,这时候会出现一个用户具有权限的集群和分区的列表,用户可以选择在哪个集群的哪个分区上部署应用。这样用户就能一键式的把应用同步部署到多个集群上。
对于应用的在线灰度发布和升级是企业应用必备的功能。大型的应用都会部署在多个集群或者分区,提高应用的高可用性,并且在升级的时候用户可以选择按集群和分区进行滚动升级。保证上线业务系统不中断,提高用户满意度。
设计方案和系统实现如下图所示。
(点击放大图像)
对于支撑多系统多应用共存的PaaS平台。必须实现配置和应用程序分离,因为每个应用的配置数据格式和需求都不一样,但是如果要求应用只是因为配置问题就修改程序结构,那么PaaS平台适应性太差,无法满足大规模的应用的部署。
Kubernetes ConfigMap的功能正好能满足多应用的复杂的环境下的配置管理,在统一PaaS管理平台中,我们进行了配置管理的封装。
设计方案和系统实现如下图所示。
(点击放大图像)
在多集群多租户模式下,每个租户会关心自己的资源和服务的运行情况。因此统一PaaS平台通过统一监控管理实现对所有租户、集群、资源、应用的集中数据采集和展示,又能分租户展示不同的集群和服务的运行情况。并能在发生故障时及时获取告警信息,快速进行故障恢复和隔离。
设计方案和系统实现如下图所示。
(点击放大图像)
通过Kubernetes多集群统一管理,实现了对一级业务支撑系统中多项目集群、跨多个网络域、跨多个数据中心的复杂集群环境下进行集中资源管理,应用和配置数据的多集群统一部署和管理,提高了业务支撑中心对各分散系统的管理和监控力度。
目前试点的三个项目,共有35个集群,约5000个容器分布在全国多个机房。提供了针对多个集群的资源统一管理和调度、镜像集中管理、应用集中部署、配置统一管理和容器统一监控,同时可以定义在每个集群部署服务的容器实例的比例。
在未采用多集群管理之前,如:网状网系统上线一个新的版本,包含总部集群、容灾集群和31个省集群,需要至少5个人部署一天;使用Kubenetes多集群统一管理平台之后,通过多集群统一部署,只需要一个人10分钟即可完成33个集群的版本升级。
通过使用Kubernetes多集群统一管理中的“克隆”功能、能够非常快速地实现服务的发布。极大提高大规模应用快速部署的灵活性和系统快捷的水平扩展能力。
通过使用Kubernetes多集群统一管理,可以方便灵活地从业务视图、集群视图、租户视图等全方位监控各集群的资源整体利用率,实现动态监控和动态快速调整业务的容器数量。
统一PaaS平台经过三个系统的集群的试点,目前运行稳定,逐步积累了很多的运维和管理经验,在此基础上计划做进一步的研究和推广。
中国移动业务支撑系统部业务支撑中心 谢军 初瑞 夏敬侃
感谢陈兴璐对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。