首页 > 技术文章 > 自动化部署--shell脚本--1

Mr--zha0 2019-07-24 15:00 原文

传统部署方式
1、纯手工scp
2、纯手工登录git pull 、svn update
3、纯手工xftp往上拉
4、开发给打一个压缩包,rz上去。解压

 

传统部署缺点:
1、全程运维参与,占用大量时间
2、上线速度慢。
3、认为失误多。管理混乱
4、回滚慢,不及时

 

新项目上线,规划排在第一位
一般银行都不提供测试接口。比如一些电商公司测试的话,经常把商品调节成1分,只能特定账号能看到。

环境的规划
1、开发环境-开发者本地有自己的环境,然后运维需要设置的开发环境,放的是大家共用的服务。如开发数据库mysql,其它:redis、Memcached。
2、测试环境:功能测试环境和性能测试环境
3、预生产环境:一般可以用生产环境中的某个节点担任
4、生产环境:直接对用户提供服务的环境

预生产环境产生的原因:
1、数据库不一致:测试环境和生产环境数据库肯定不一样的。
2、使用生产环境的联调接口。例如,支付接口

 

预生产环境--生产环境--灰度发布
 
灰度发布:
阿里云产品上线,都是一个区一个区上的。肯定不是一下子都上的
qq弹窗:恭喜你获得某某版本资格,请下载新版本享用,你就是小白鼠,这个也是一种灰度发布

 

规划
已经有一个可以上线的代码在代码仓库。我们如何设计一套生产自动化部署系统。
1、规划
2、实现
3、总结和扩展。PDCA
4、在生产环境应用

 

自动化部署系统的规划
 
需求: 
1个集群有10个节点。一键部署这10个节点。
2、一键回滚到任意版本
3、一键回滚到上个版本

 

部署:

1、代码放在哪里:svn,git
2、获取什么版本代码?
svn+git直接拉去某个分支
svn:指定版本号
git:指定tag
3、差异解决:
(1)、各个节点直接差异:
(2)、代码仓库和实际的差异。配置文件是否在代码仓库中
(3)、配置文件未必一样:crontab.xml预生产节点
4、如何更新。java tomcat。需要重启。
5、测试。
6、串行和并行 分组部署
7如何执行。(1)shell执行。(2)web界面

 

关于配置文件存放:
配置文件放代码仓库里,岂不是所有开发都能连数据库了。
因此配置文件不能放git里。
有的人把配置文件放某个分支里。让一些人没法看到
我觉得可以单独有个放配置文件的git

 

腾讯蓝鲸:我帮你做个平台,你写个脚本,我帮你发布到某个机器上,你通过平台帮你执行
一些公司现在的运维,不管任何发布,都是做好界面,让项目负责人去通过界面管理

 

关于差异文件:

可能有些节点有特殊的差异性文件
 
 
自动化部署流程设计

 

推荐阅读