前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA自动化上线系统到底是怎么实现的?

JAVA自动化上线系统到底是怎么实现的?

作者头像
普通程序员
发布2019-10-23 11:51:24
1.1K0
发布2019-10-23 11:51:24
举报
文章被收录于专栏:普通程序员

这篇文章描述的系统,是由质量保障部宋伟达设计并实施。感谢伟达的支持!

整个系统以在tomcat部署web应用为例,部署其他可执行Java程序过程类似。

一、整体架构

上线系统的整体结构如下图

整体架构主要涉及5部分系统

1、Git

Git版本管理库用于存放上线系统的 CM工程(Configuration Management,配置管理工程,后续会详细介绍)以及需要部署的业务系统。

2、Jenkins

执行代码编译、打包、部署代码等任务

3、Nexus

Maven数据仓库,用于Jenkins下载依赖包以及存放编译代码生成的jar包(java)

4、Business Server

用于部署业务系统的服务器(含Tomcat等java容器)

5、Nginx

业务系统的负载均衡。部署重启业务系统时,需要先通过Nginx把该服务流量切走;重启成功后,再将流量切回来。

二、核心流程

下图是自动化上线系统核心流程

1、Jenkins拉取CM工程。

(1)系统上线人员在Jenkins中执行上线操作,将上线脚本script和上线系统配置信息configurations从Git中拉取到Jenkins的上线Job。

(2)Jenkins Job根据job_name(对应上线哪个业务系统)确定对应配置信息 configuration

(3)载入配置信息configuration

(4)执行部署脚本script中的Deploy.sh

2、预处理业务系统代码(由Deploy.sh文件描述处理流程)

(1)将业务系统代码克隆岛Jenkins所在服务器(集群模式为某个slave节点)。git clone -b

(2)执行Maven打包。maven package -P ……

(3)如果是正式发布版本,执行打tag。(建议 发验收环境也打tag,用来发部线上系统;线上环境也打tag用来回滚)

3、与Maven仓库交互

在第2步(上一步)执行过程中,会涉及到下载依赖jar包,或者上传上线工程中编译产生的jar包的操作。

4、同步部署代码(jar包)

(全量部署和增量部署的问题)

(1)将第2步中生成的jar包、war包等同步到应用部署服务器(Business Server),其中包含deploy_tomcat.sh项目实际部署脚本。

(2)(Jenkins Job所在服务器的deploy.sh脚本)通过ssh方式,连接到应用部署服务器(Business Server),执行deploy_tomcat.sh脚本,开始部署应用系统。

如果是集群,重复4、5、6步,直到部署完所有节点。也可以部署一部分节点,实现灰度上线。

5、本地部署

(1)找到tomcat的pid,执行shutdown.sh。(如果要优雅关闭,可在这个环节进行必要处理)

(2)将待部署的代码(war,jar)复制到tomcat对应目录。

(3)启动tomcat(应用系统)

(4)检查服务是否成功。(访问某个指定地址,返回200成功,否则失败)

(5)通知Jenkins Job部署结果(成功或失败),通过ssh方式返回,含日志(实时日志)

6、切换流量

如果需要,通过修改nginx配置,将执行部署的Business Server的访问流量切走。

三、重点模块

1、CM工程

CM(Configuration Management )工程是整个自动化上线系统的核心,主要包括两个部分。

(1)script

script是执行自动化上线功能的脚本,核心内容是通过maven打包需要部署的工程,然后执行部署操作。具体脚本为deploy.sh和deploy_tomcat.sh(以在tomcat部署web应用为例)

(2)configurations

configurations是需要自动化上线的业务系统的上线配置信息(有几个需要自动化上线的系统,就有几分对应的数据)。

具体内容包括项目个性化配置信息,以及差分配置规则等(根据实际项目可以有更多的配置信息。类似差分配置一般要求源代码按照一定的规则存放,所有项目可以统一处理)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 普通程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档