首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运维老杨:传统行业在自动化部署实践中应用规范的思考

要做好自动化部署,应用规范需先行,整理了一下最近的思考,罗列如下。

——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平台)。

应用打包管理的工作量,涉及到规范梳理定义,业务梳理,脚本开发,打包,调试,是一项工作量比较大的工程,我们应先挑选需求比较迫切,具有典型代表意义的应用系统,跑通整个流程,再总结相关经验,全面推广和实施。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180729G0KYWX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券