所以无论您是环境部署工程师还是自动化脚本开发人员,如果您想开发一套自动化环境部署的解决方案,阅读本文将会有助于您的工作。作者所在的项目是 IBM 基于企业级的
一款庞大而
复杂的云计算战略产品,通过为用户提供可视化的网络平台接口,充分和快捷地帮助客户部署高灵活度的云方案。在项目开发及上线过程中,平均每四个小时会发布一个
新的安装版本,从软件测试到生产发布需要超过四个环境的支持,尤其在 Demo(演示)环境每天需要部署一次,每个环境会涉及冗余
镜像服务、分布式架构、加密的 VPN 终端访问。而部署过程中面临的情况是跨地域和跨时区的,部署软件包发布在美国 Austin,云环境的数据中心在新加坡,部署人员在中国上海。部署流程包括:部署版本软件包的下载和管理、数据库升级、动态服务器程序部署,访问门户的部署,静态访问服务组件的部署和注册。如果按照传统的手工部署,从头到尾即使是熟练的部署工程师也需要至少
两天的时间来完成,而且人工部署会出现疏漏和错误的发生,经常会碰到模块的漏包情况。所以如何搭建一套综合全面的自动化框架,通过脚本运行的方式高效准确的完成各级环境的部署成为项目进展顺利的一项重要工作。目前此自动化框架已经上线,每天只需一小时的时间,就会准确高效地把最新版本部署到各级
云计算环境中。这套自动化框架不仅已应用于该项目本身,其设计思路,功能模块也适用于软件工程领域里其他分布式、架构庞杂的项目,所以无论您是环境部署工程师还是自动化脚本开发人员,如果您想开发一套自动化环境部署的解决方案,阅读本文将会有助于您的工作。
这套综合的解决方案至少包括以下优点和功能:
提高云计算环境的部署效率 排除人为部署的疏漏和错误 可重用,易扩展 开发工具开源,节约成本
设计架构
首先我们要从 IBM 云计算环境架构入手分析该环境的结构特点,这样我们才能有针对性的设计专门的自动化框架,IBM 云计算环境是基于 IaaS(Infrastructure as a Service 基础架构服务)提供的云服务,用户通过 Web Service 在 IBM 云环境中获得虚拟设施及绑定的软件服务,比如用户可以在此平台申请 Linux、Windows 等操作系统,还可在此平台申请 IBM 的 Websphere、DB2 等软件产品,这些服务都是以镜像方式存储在 IBM 云环境中。
为便于读者理解设计的脉络,以及内部模块之间的相互联系,我们先来分析一下 IBM 云计算环境的逻辑架构图,如下图所示:
图 1. IBM 云计算环境逻辑架构图
用户通过 Web 终端访问 IBM 云环境的 BSS(Business Service)平台,向该平台发送申请相关镜像服务请求,比如申请一台附带 WebSphere 的 Red Hat Linux 操作系统,该请求通过 WebSEAL 接收并发送到 CFEP(Common Front-End Portal)处理,该请求调用对应的 REST API,把请求信息打包成信息流(Message)通过信息总线来传送到后台云服务器(Service Provider),相应附带 WebSphere 的 Red Hat Linux 操作系统镜像服务产生,相关注册信息被存储在对应的数据库服务器中。所以 IBM 云计算环境包括三个组服务:a. IHS Portal 服务 b. CFEP Web 和数据库服务 c. Service Provider Web 和数据库服务,每组服务有对应的硬件环境支撑,我们再来看一下 IBM 云计算环境的物理架构。
图 2. IBM 云计算环境物理架构图
本图中黄色区域为 IBM 云计算环境的前端服务配置,蓝色区域是云服务后台配置。其中后台服务配置是整个云环境的核心区,是单点固定服务单元,而前端服务可以根据业务需求进行跨区域扩展,即可以提供多台分布于不同物理位置的服务单元。在本文中为便于解析,把该云环境的前端服务定为两组硬件环境(Front end area 简称 FE),分布在两个虚拟局域网 Vlan1,Vlan2 中,后台服务(Service Provider area 简称 SP) 配置与 Vlan3 中,合称 BSS 平台。
每天在 IBM 云计算环境更新部署程序的情况是:BSS 服务是分布在新加坡云环境数据中心,部署发布程序包文件在美国 Austin 的发布服务器(Austin build machine)中,部署执行环境即自动化脚本运行环境(Single Point Execution Machine) 在中国上海。如下图所示:
图 3. IBM 云计算环境自动化部署架构图
在该架构中进行程序部署的步骤是:
从美国 Austin 发布服务器,自动检测和传输新发布的部署程序包文件到自动化脚本运行环境(Single Point Execution Machine) 在 Single Point Execution Machine 上运行自动化脚本执行部署 部署更新 Front end 和 Service Provider 数据库 在 Front end 和 Service Provider Web Server 上更新部署动态应用程序 在 IHS Server 上部署静态程序组件 重注册程序组件 更新 Portal Web 文件 更新 Info center 信息库 自动化脚本执行完毕发布部署执行日志