一种云计算时代的DevOps自动化运维平台
2018-11-24樊炼廖振松
樊炼,廖振松
(中国移动通信集团湖北有限公司,武汉 430023)
1 引言
自动化运维平台就是以云平台技术为基础并借助DevOps方法来实现应用全生命周期的自动化管理。DevOps(Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。在传统的软件开发过程中因受组织、资源等各方面的因素影响要实现DevOps是较为困难的,但随着云计算技术的发展,依托其对资源、监控、自动化协作的能力,使得DevOps可以在云平台上得到充分的利用及实现。
2 自动化运维平台技术实现方案
2.1 资源统一管理
要实现应用全生命周期管理,需要云平台实现各类资源的统一管理,包括计算、存储、网络等基础资源,也包括应用的版本管理,另外还需要实现资源的自动部署及调度。
构建开发环境、测试环境和运行环境,需要云平台实现操作系统自动安装、应用和中间件的自动安装部署,并保证部署版本的一致性。
2.1.1 一键式快速安装
云平台支持从底层的操作系统安装,创建环境、软件安装,整个过程有云平台自动完成,用户只关心需要的环境即可。其内含软件发布、资产录入、制定操作系统自动部署任务、提取操作系统版本、部署操作系统、更新资产库、返回安装结果并通知、性能/告警/开关机、制定软件自动部署任务、提取软件版本、部署软件、更新资产库、返回安装结果并通知、运行状态/启停、软件关联关系管理及调度等步骤。
2.1.2 操作系统自动安装
操作系统自动安装实现包括管理员通过管理节点分配IP段,同时配置待安装的OS类型及版本;以PXE(网络启动)方式启动新增机器,从管理节点获取IP;从管理节点下载操作系统镜像,执行自动安装;以及管理节点记录安装结果等步骤。
2.1.3 版本一致性检查
IT运维自动化部署系统作为云平台的一部分,作为一种开发模式的PaaS服务,提供应用和中间件的部署和应用调度流程管理功能,以及版本一致性检查管理功能。云平台通过自动巡检触发版本一致性检查。其判断条件为版本信息元数据文件是否存在、版本信息元数据文件信息与软件库信息是否一致、检查指纹数据是否与初始值一致。
2.2 监控管理及弹性伸缩
应用全生命周期自动化管理,除上面所述的必要功能以外,各阶段的监控保障也必不可少。云平台可以实现对操作系统、中间件、应用、物理资源、持续集成过程等进行全方面的监控,还可以通过自动巡检实现运维自动化。
2.2.1 性能监控
云平台可以采集的性能指标包括虚拟机、Docker、物理机的CPU、内存、磁盘I/O、网络I/O等性能指标;交换机、路由器、防火墙、负载均衡器等硬件设备的性能指标;操作系统、中间件的性能指标;以及应用自定义的性能指标。
2.2.2 告警监控
云平台可以采集的告警包括设置性能指标阀值产生的告警、硬件设备产生的告警、自动巡检自定义的告警、应用自定义的告警、以及版本一致性检查告警。
通过以上采集到的性能及告警,云平台可以支持资源的自动弹性伸缩,当达到某一条件时自动触发,无需人工参与,进而保证云平台上的应用可以随着业务量的变化自动调配资源。
2.3 应用全生命周期自动化管理
图1为云平台支持应用全生命周期的自动化管理过程,下面详细阐述如何通过云平台来自动化实现这些过程。
2.3.1 开发阶段
应用开发的最终目的是使应用在现网环境运行,开发环境与生产环境一致可以最大程度保证应用上线的可靠性,避免因为环境不同导致的编译错误或其他问题。其次,应用开发需要研发团队的软件开发工程师的协作,一致的开发环境是开发协作成功的基础。
云平台可以轻松完成多套开发环境的分发,依托镜像管理功能,开发人员可以制作标准的开发环境虚拟机镜像,当增加开发人员时即可通过此镜像创建新的虚拟机。通常此虚拟机中应预装好开发开发工具。
2.3.2 测试阶段
要实现DevOps,自动化测试必不可少,自动化测试则包括了持续集成以及自动化测试执行。持续集成的工作是,定时在工具版本库中获取最新的源代码,然后在编译环境中进行编译,将编译后的程序发布到测试环境中,触发自动化测试程序或脚本,完成自动化测试,并收集测试结果,生成测试报告。
图1 云平台支持应用全生命周期的自动化管理
持续集成在自动化测试过程中是一个总调度器,而编译、测试执行则根据不同的应用来定制。在云平台中,持续集成作为PaaS的一个服务提供统一的管理,租户可以直接申请配置并直接使用。
2.3.3 部署阶段
应用完成开发测试后即可发布版本,并部署到试运营环境或现网环境。部署过程具体包括版本发布、版本编译、部署安装、验证这几个过程。
在云平台中,我们设计并实现了软件版本库管理功能,主要负责应用软件、中间件的版本管理,以及安装后的版本一致性检查等功能。
应用发布版本后,首先上传到云平台的软件版本库中,然后选择要部署的服务器,由云平台负责应用的分发及安装,安装完成后会统一由云平台监控。如有文件进行篡改,则产生告警。此过程可以保证安装版本的一致性。
2.3.4 试运行阶段
应用在正式上线前,如果有与现网环境完全一致的环境进行验证和试运行,将极大的保证应用上线的可靠性。在传统IT模式下,另外准备一套与生产环境一致的试运行环境基本上是不可能的。而在云计算技术下,应用部署在云平台上,云平台即可以提供现网环境,也可以同时提供试运行环境,并且当试运行完成后,可以直接通过云平台的相关服务能力将试运行环境转换为正式运行环境。
2.3.5 运行阶段
云平台为应用提供正式运行环境,除虚拟机/Docker、基础网络、块存储资源以外,还提供负载均衡、安全防护、备份等能力,全面保障应用的稳定运行。
2.3.6 运维阶段
应用上线运行后,运维功能则是日常工作重点。云平台可以不仅对应用、服务器、中间件进行性能指标采集、告警处理,并且可以通过根据性能指标定义弹性调度策略,实现应用、资源的自动伸缩。
图2 灰度发布过程示意图
2.4 灰度发布
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB Test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,然后逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,保证业务的连续性,在初始灰度的时候就可以发现、调整问题,以保证其影响度。图2为灰度发布过程示意图。
在应用全生命周期自动化管理过程中,引入灰度发布,将试运行环境切换到正式运行环境。实现灰度发布的关键是负载均衡的精细化管理。
在云平台中提供ELB(弹性负载均衡服务),在灰度发布过程中控制ELB的分发策略及real host配置。具体步骤有以下几点。
(1)配置ELB的分发策略为保持源IP或Session访问,保证现有用户的访问到原有系统中。
(2)将新系统的real host配置到ELB中。
(3)减少旧系统的real host,并回收旧系统所使用的虚拟机/Docker等资源。
3 自动化运维平台创新点
利用性能监控工具获取应用所有虚拟机、Docker的CPU、内存的性能数据,结合具体应用设置的弹性调整条件进行分析,当连续N次CPU利用率高于设定的高阀值时,触发扩充虚拟机、Docker动作;当连续N次CPU利用率低于设定的低阀值时,触发缩减虚拟机、Docker动作。通过此方法来实现自动运维。
利用云平台提供的资源、监控和管理的手段,借助DevOps方法来实现应用上线各阶段的自动化管理,即可以保证质量,又可以从一定程序缩减应用上线周期;利用云平台提供的统一环境,确保应用上线各阶段环境的一致,从而更好支持应用各过程自动化管理,有效提升应用上线的可靠程度。
通过云平台的资源管理及安全机制,配置与现网系统一致的运行环境,试运行完成后通过设置直接切换至现网运行环境.通过弹性负载均衡服务以及其他云平台服务,共同完成应用灰度发布,保证业务系统稳定连续。
4 结束语
DevOps自动化运维平台应用推广简单,实施需要的硬件设备,采用x86架构,硬件成本极大缩减,软件能力和数据库能力上又能实现传统架构无法达到的线性扩展的能力,应用能力开放得到极大提升,支持中间件、Web应用、数据库等多方应用的灵活部署。因此对支撑4G业务,流量经营的能力支撑成本极大缩小。