暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

同城双活-神兵发布篇

Hubble技术架构 2021-04-18
1058

1. 引言

同城双活发布简单来说就是要把要上生产的配置文件、数据库脚本、程序组件包发布到双活和默认这两套环境。
在发布的整个过程中,我们遵循:一套配置发多环境、一次打包发多环境、自动化发布原则。
说明:本文只针对神兵发布平台。

2. 发布方案

2.1、发布流程线

神兵发布主流程图:

说明:

1、发布流水自定义发布节点,根据用户需求新增DEV\UAT\LPT等各环境。

2、发布流水建议先部署双活环境,再部署正式环境。

3、目前神兵已支持双活发布,配置即可。(具体咨询对应的版本经理)。

神兵发布实现效果图:

2.2、应用与配置架构

        目前同城双活方案中双活环境、主环境各自连接所属IDC的配置中心,两配置中心之间是隔间的。

如图所示:

说明:因双活环境是独立的配置中心,pafa配置中心要重新申请领域,可以与主环境的领域名称相同。

2.3、程序组件发布

程序组件发布注意点:

      1、双活环境第一次发布时,需求把主环境pafa管控后台组件包仓库同步到双活环境。

程序组件包分为二类:

1、组件包sar发布

组件包sar发布与目前的主环境的发布相同。只要在项目的父pom.xml有依赖的组件sar,神兵发布自动发布到Pafa组件仓库中。

2、组件依赖包jar发布 
组件依赖包jar发布与目前的主环境的发布相同。只要在组件的配置目录paconfigs_prd创建lib文件夹,把要发布的jar放进来。神兵配置后自动发布组件依赖包jarPafa组件仓库中。

如图所示:

说明:组件包sar、组件依赖包jar都可以手动上传到Pafa组件仓库中,在这推荐自动化的方式发布。

2.4、配置文件发布        

配置文件发布注意点:

1、配置文件建议尽量把环境差异的配置项放到pafa配置中心的全局变量管理或apollo的pizza.properties上。
2、双活环境第一次发布时,需求把主环境的配置(含:apollo、pafa配置中心)同步到双活环境对应的领域,特别注意全局变量环境差异的配置项目要修改

各配置中心发布过程:

1、Apollo配置中心

      Apollo配置的发布与主环境的发布一样。

      (apollo暂时只能通过手工发布,无自动化发布工具)

2、Pafa配置中心

      Pafa配置中心可以通过神兵发布,神兵发布时会把配置文件夹发布的Pafa 配置中心的对应目录。

       A、两环境差异配置项分离后,差异配置项放到全局变量管理或apollo的pizza.properties。

              神兵发布时一套配置文件(paconfigs_prd)发布到双活IDC配置中心 Pafa配置中心和主IDC Pafa配置中心。

B、两环境差异配置项无法分离。

            神兵发布时两套配置文件(paconfigs_prd1,paconfigs_prd2)分别发到双活IDC配置中心 Pafa配置中心、主IDC Pafa配置中心。 

说明:有两套配置文件,存在配置项差异的风险。

3、本地环境配置

      本地环境配置在应用服务器的pizza.properties文件在存放环境差异配置项,强烈建议把pizza.properties放到apollo上,减少配置项变更的成本。         

2.5、数据库脚本发布

目前双活总本方案,数据库都master-slave的方案,具体方案请参与《同城双活-DB篇》。

数据库脚本只需发到数据Master节点,数据库master-slave同步机制到所有的Slave。

1、DB脚本手工发布


          数据库运维-->跳板机-->登录主数据执行数据脚本,master-slave同步机制到所有的Slave。         

 2、DB脚本自动化发布(推荐使用)

     DB脚本自动化发布是利用maven插件hubble-maven-dbgo及dbgo平台实现。

     DBGO平台连接Master数据库执行数据脚本,master-slave同步机制到所有的Slave。

3. 问题和挑战

1、一次打包发多环境

      在自动化发布系统中打包是较为复杂的过程,即使相同的代码,多次打包都是有风险的。神兵发布的过程中配置一条流水,打一次包,发布到双活、默认两个环境。

2、一套配置文件发多环境

      每次发版本配置文件的差异是容易出现生产事故,特别是在多环境下更为突出。解决这个问题是要把两个环境的差异配置项放到各自环境的pafa配置中心的全局变量管理或apollo的pizza.propterties。这样两环境非差异配置维护在一套配置文件中,减少在发布过程中因配置项的差异或同步带来的风险。     

3、自动化发布

      同城双活发布与主环境发布一样,整个过程中配置文件、数据库脚本、程序组件包发布尽可能用自动化发布,减少人工操作的风险。

4.  总结

      同城双活发布的全过程中遵循一次打包发多环境、一套配置文件发多环境、自动化发布原则,可以减少发布过程中不必要的风险。



作者:李春明 ( LICHUNMING598 ),网金研发团队架构师


本文是个人观点,描述不当或不正确,欢迎指定。

文章转载自Hubble技术架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论