利用蓝鲸标准运维实现应用发布

本篇为蓝鲸标准运维使用场景介绍的第二篇,通过一个真实的自动化运维项目案例中涉及的应用自动发布的场景,来展示蓝鲸标准运维的强大和灵活性。由于整个发布场景还是比较复杂的,小编仅通过简单的应用发布,来演示设计思路和实现过程。如果有进一步的需求,可以联系元鼎科技技术团队。

为什么应用要实现自动发布?

随着企业内部业务的不断发展,所对应的应用程序也变得越来越复杂,而部署包含多个组件的应用程序更是极具挑战性。第一个挑战是确定应部署的每个组件的版本,另一个挑战是将所有组件的所需版本传送到目标环境上,并执行相应的部署逻辑。同时,企业要求更频繁的发布,而开发人员对自助服务部署功能的需求越来越强烈,因为他们开发进展得非常快,不想等待其他某个人为他们部署。手动部署既慢又容易出错,并且无法跟上我们的部署环境中不断增加的部署目标数量。部署到不同的环境,分散在不同的数据中心,使用不同的流程,这些都带来了更多风险。

应用部署自动化并不仅仅是自动化。流程必须是模块化和精心设计的,环境和配置必须被管理。自动化工具必须为你提供每个流程步骤的可见性。流程必须是可靠且可重复的,以便我们能够以可控的方式将它作为自助服务提供给需要的人。一切都必须是可追溯的,比如:谁在哪里、何时做了什么。一切都必须是安全的,要求能通过审批进行控制,并通过通知获得部署结果。

蓝鲸应用发布CD原理

蓝鲸应用发布CD原理是依托于蓝鲸的管控平台,管控平台是整个蓝鲸平台的底层管控系统,是蓝鲸所有其他服务的基础,是蓝鲸服务体系与用户机器的连接器。

蓝鲸管控平台是典型的两层分布式 C/S 结构,主要包含智能 Agent,提供各种服务的 Server,以及 zookeeper、redis、MySQL 等周边保障模块。其中Agent 是部署在业务机器上的程序,每台业务机器理论上只可以部署一个;其他模块部署无具体要求,用户可以单独部署,也可以混合部署。

在整个蓝鲸体系中,唯独蓝鲸管控平台没有直面用户,但蓝鲸管控平台在蓝鲸体系中却是不可或缺的,它为蓝鲸其他平台提供了人机交互的通道与能力。蓝鲸管控平台主要提供了三种类型的服务能力:文件分发传输能力、命令实时执行与反馈的能力、大数据采集与传输的能力

蓝鲸标准运维实现应用自动发布步骤

利用蓝鲸标准运维实现应用发布_第1张图片
image.png

首先,可以把应用发布整个过程主要分为:

  1. 应用包获取
  2. 应用发布包存储库
  3. 应用服务停止
  4. 发布包备份&分发
  5. 应用服务启动
  6. 应用服务状态检测&状态通知

通过标准运维的“原子“对应用服务节点进行执行命令及分发文件操作。当执行任务期间如果出现“异常情况”时,则给负责人通知提示,并且暂停任务,通过以上分解的流程编排步骤,实现应用自动发布。同时,标准运维“并行网关”可以实现流程同步进行,并将通用流程编入“子流程”,结合输入输出参数等满足更复杂的应用发布场景,实现一次编排,多次使用的效果

应用包获取

应用包获取可根据应用不同情况获取发布包,通过从发布代码分支拉取源码之后,如果是类型JAVA编译类型的jar包或者war包,可通过在对应脚本区域根据应用情况自行编写生成包的编译脚本,即执行编译脚本生对应的包;如果是文件夹类型可通过直接打包成压缩发布包;然后提交到发布包存储库。

应用发布包存储库

应用发布包存储库可以是共享存储/SVN仓库/GIT仓库等。为已部署或要求部署的应用发布包文件提供安全的存储。这可以确保部署的文件版本是可追溯的,并且保证各环境中部署的文件是相同的。

应用服务停止

对应用服务的节点服务进行服务停止操作,蓝鲸可对批量节点进行同时操作

发布包备份&分发

发布包备份&分发是在应用服务节点建立备份规则,在做发布包发布之前进行本机老版本备份。

Ps:备份规则包含备份目录、备份名称及保留周期等都可以按照自己应用实际情况进行自定义脚本编写

应用服务启动

对应用服务的节点服务进行服务启动操作,蓝鲸可对批量节点进行同时操作。

应用服务状态检测&状态通知

对应用服务的节点服务进行应用服务状态检测,蓝鲸可对批量节点进行同时对服务进行服务检测操作及状态通知

Ps:状态通知包含备短信、微信、电话、邮件等。

总结

以上,通过一个在传统企业应用比较普遍场景,初步展示了蓝鲸标准运维设计和实现的过程。进一步的,可以把这个场景做进一步的丰富和扩充,比如保证业务不停,可采用应用服务器的分组部署及启停,以及加入不同环节的人工交互处理过程。总之,拥有标准运维这把流程编排的的万能之匙,任何企业的IT部门或运维团队,在面对各种各样的复杂运维流程和场景时,都可以通过标准运维将这些重复性、规律性的手工作业场景,进行灵活的分解、组装和编排,实现并满足企业对运维自动化的需求,并带来显著收益。

你可能感兴趣的:(利用蓝鲸标准运维实现应用发布)