要做好自动化部署,应用规范需先行,整理了一下最近的思考,罗列如下。
——Rayoung
- 01 -
传统手工发布应用的问题
人工上传和copy文件,jar包和war包、配置项目都没有版本管理,维护混乱。
以 Java 工程为例:
scp xxx.class to server path or ftp to server path
service restart
怎么回退?代码怎么管理?每次都增量带来的后果就是没有人敢动。
mvn clean && mvn package
scp xxx.war to server path
service restart
war包没有版本号,人肉上传,删除等等很麻烦。
在银行传统应用中引入自动化工具后,如果我们只是将相关的步骤通过自动化工具串接执行,只解决了操作自动化的问题,对于应用发布涉及到的版本管理、复杂沟通、标准化是没有太多帮助的。
- 02 -
我们应该怎么做
针对传统银行应用的自动化部署,可根据三化的工作方法,进行一定的实践: 标准化、模板化、体系化(自动化),将规范先行。
提出四大规范:
应用系统划分部署单元规范
脚本编写规范
应用打包规范(人工打tar包)
应用发布规范
- 03 -
应用部署操作流程
应用运维操作须按照自动化部署平台(NAD平台)设计的流程规范进行准备和执行。NAD平台通过工作流引擎模块,实现部署单元各原子操作的组合,并完成应用版本发布、服务启停的相关操作。
用户需以部署单元为单位,定义和执行具体应用用户的运维操作,遵循以下流程:
- 04 -
部署单元命名规范
“部署单元组”名称由5位字母或数字组成,命名方式由应用架构发布;应用类型分为WB、AP、DB 三种。划分规范如下:
一个应用组件根据其应用的类型和提供的业务功能,划分为一个或多个部署单元。WB、AP、DB应用类型不同,必须划分为不同的部署单元;应用类型相同,但部署的业务功能不同,必须再细分成不同的部署单元;
部署单元名称由“部署单元组” +“_”+ “应用类型“组合而成;
一个应用组件的部署单元划分示列如下:
- 05 -
部署单元使用规范
部署单元是自动化部署平台(NAD)的管理和操作的基本单位,在使用上需要遵循如下规范:
以部署单元为单位申请变更平台资源,在一个部署单元中所有的硬件配置、平台软件、操作系统参数、应用共享NAS存储挂载点、网络访问策略等必须统一;
以部署单元为单位进行应用的脚本部署、应用版本文件分发,在一个应用部署单元中实施的运维操作必须统一;
一个部署单元中,存在HA、冷备等特殊服务器时,在执行脚本中要对特殊服务器做判断,确保统一的脚本操作能够执行并不会导致应用异常。
- 06 -
NAD平台脚本通用规范
针对文件命名、脚本版本信息定义、脚本执行判断以及脚本结果输出等通用内容,进行定义和规范。
编写原则:每一个脚本只能涉及一个部署单元一个用户的操作;用户编写的脚本必须在NAD平台进行定义和注册;脚本权限设计和审核。
- 07 -
原子操作脚本规范
标准原子操作和自定义操作脚本需遵循云平台脚本的通用开发规范;部署单元中所有服务器,一个应用用户部署同一套操作脚本。
其中标准原子操作脚本命名建议如下:
- 08 -
应用版本打包规范
应用版本下发和更新建议应需要以下三个文件:
应用文件版本包:用于存放需要应用更新的版本文件;
分发配置定义文件:配置文件用于定义分发文件的源路径、目标路径、属组以及权限;
MD5文件:该文件包括版本包和配置文件的MD5码,用于版本包和配置文件下发后的校验。
- 09 -
应用版本打包规范-应用版本包规范
用户需要分发的应用版本文件必须打包;
一个应用版本包是一个扩展名为tgz的压缩包,压缩包支持以unix命令tar 解压;
一个部署单元中的一个应用用户分发的文件打成一个版本包,版本包的命名方式如下:
部署单元名称_用户_日期(YYYYMMDD)_版本号(Vx.x).tgz
例如:NBCB1_AP_WAS_20180729_V1.1.tgz
版本包内的目录以及文件使用相对路径,不能包含用户所在主目录路径,版本包示例见附件7.4应用版本包示例
版本包文件大小不能超过1G
- 10 -
应用版本打包规范-配置文件规范
文件填写必须遵循以下规范:
1、用户、属组填写规范
属主和属组为必填项;
目标服务器上必须存在属主和属组;
名称和值用“=”分隔,每条单独一行。
2、文件权限填写规范
默认权限为必填项;
默认权限填写为三位数字的权限值,NAD平台将修改版本包所有文件权限值;填写为null,云平台不修改版本包内文件的权限;
特定目录和文件权限为选填项,用于填写版本包中需要特殊指定权限的目录或文件。填写目录权限时,将修改该目录下所有文件和子目录的权限;填写文件权限时,只修改文件的权限;
文件或目录与对应的权限值用“=”分割,每条单独一行。
3、版本包分发路径填写规范
版本包中最顶层的目录和文件必须一一指定分发目标路径,每一行定义一个分发的目录或文件;
非顶层的目录文件跟随上层父目录一起分发,不能单独指定分发目标路径;
目录和文件与对应的分发路径用“:”号分隔,每条单独一行。
配置文件命名与示例如下:
一个应用版本包必须对应一个配置文件,文件的统一命名格式为:
部署单元名称_用户_日期(YYYYMMDD)_版本号(Vx.x).cfg
配置文件内容包括以下内容:
################全局默认权限定义#########################
USER=WAS #属主
GROUP=WAS #属组
ALL_AUTH=644 #默认权限
################特殊目录以及文件的权限定义################
agent/scripts/package.sql=755 #需要修改权限的文件
replicas.prop=755 #需要修改权限的文件
################分发目标路径定义#########################
agent:/home/ap/was #版本包源目录:目标路径
replicas.prop:/home/ap/was #版本包源文件:目标路径
- 小结 -
应用发布可以结合当前的自动化运维平台(NAP平台)和自动化部署平台(基于Jekins,对接自动打包)统一考虑,底层自动化的通道能力可以复用,综合建设上层自动化发布的业务层(NAD平台)。
应用打包管理的工作量,涉及到规范梳理定义,业务梳理,脚本开发,打包,调试,是一项工作量比较大的工程,我们应先挑选需求比较迫切,具有典型代表意义的应用系统,跑通整个流程,再总结相关经验,全面推广和实施。
领取专属 10元无门槛券
私享最新 技术干货