自动化部署代码实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、自动化部署代码实践早期手动部署代码1.纯手动scp上传代码。2.纯手动登陆,gitpull或者svnupdate。3.纯手动xftp上传代码。4.开发发送压缩包,rz上传,解压部署代码。缺点:1.全程运维参与,占用大量时间。2.如果节点多,上线速度慢。3.人为失误多,目录管理混乱。4.回滚不及时,或者难以回退。设计自动部署代码流程设计,确定目标。1、自动部署环境1)开发环境开发者本地有自己的环境,运维配置公共开发环境,大家可共用的服务。例如:开发数据库MySQL,redis,Memcached等。2)测试环境功能测试以及性能测试。3)预生产环境生产环境集群中的某一个节点,并且连接生产库。(不对外,不做破坏型操作。)4)灰度环境根据不同的区域进行划分分。(生产环境)5)生产环境对用户提供服务的环境。预生产环境由来:a.数据库不一致,测试环境和生产环境数据库是不一样的。b.使用生产环境的联调接口;例如:支付接口。(电商业务)2、自动部署规划已经有一个可以上线的代码在git仓库。我们现在要做10个集群节点的一键部署,秒级回滚。所有的web服务,都应该使用普通用户。(强烈建议)所有的web服务都不应该监听80端口,除了负载均衡。那我们如何设计一套生产自动化部署系统。a.规划。b.实现。c.总结和扩展。(PDCA方法论)d.生产环境应用。实现思路:1)代码放置位置Git(首先)、Svn2)获取最新代码获取最新分支获取版本号获取tag包3)差异解决各个节点之间差异代码仓库和实际的差异。配置文件是否放在代码仓库中。(配置单独进行存放,config.example)短信接口,支付,等敏感信息不让所有开发知道统一的.集群有10个节点。(Job节点crontab.xml配置文件不一样)4)项目名称如何设计项目名称_环境名称_版本_分支_时间_某开发提交测试:rainbow_test_v1.1.1_dev_2016-08-11_12:12_xuliangwei生产:rainbow_pro_v1.1.1_master_2016-08-11_11:11_xuliangwei5)如何更新php,tomcat需要重启,重新软链接。6)如何测试测试(关键的页面,API,后台等)测试一个预生产环境,通过则继续部署,如果失败,退出部署操作。7)记录日志可以部署统计。成功多少次。失败多少次。回滚多少次。8)多人同时执行脚本防止多人操作导致重复上线失败。通过lock锁对文件进行控制。9)串行,并行机器少的情况串行感觉不出什么。如果机器过多则会很慢。分组部署并行部署,以及分组测试。测试一个预生产环境,通过则继续部署,如果失败,退出部署操作。10)部署服务器双机防止部署系统down机,部署机代码丢失,误操作。11)如何执行。shell执行web界面点击(自定义或jenkins)12)如何实现正常回退,以及紧急回退(回滚的必要性)通过软链接的方式来实现代码秒级别回退。3、自动部署难点在大公司推进自动化部署上线,是有许多的难点,根据个人公司的不同,来选择不同的方法来进行推进。自动化推进难点:a.能力(个人能力,团队能力)b.责任(责任能否承担,敢于承担责任)c.公司流程、人员、组织架构。可通过如下方法推进:a.目标化沟通。b.责任划分c.ITILd.项目管理:PMBOOK自动部署实践整个集群自动化部署流程设计如下:可根据如下思路,结合公司实际业务来编写shell脚本或者Python。1.获取最新代码2.编译(可选)3.配置文件(软连接或者拷贝)。4.打包(tar,加速传输)5.文件分发(ScpRsyncSalt)(不需要密码验证)6.将目标服务器移除集群(注释配置文件)7.解压8.防止webroot站点目录9.scp差异文件(可能有一个节点配置文件不一样)10.重启Web服务11.测试正常回退实践1.列出回滚版本2.目标服务器移除集群3.执行回滚4.重启并测试5.加入集群紧急回退实践1.列出回滚版本(ls-l或find查出对应的历史版本)。2.执行回滚操作(删除软链接,重建软链接)。3.重启对应服务。自动部署采坑自动化部署php环境或者java环境的过程中,那么你一定遇到了如下的问题。1.如何应用到你的生产环境。2.回退到“上一个”“正常”版本。3.自动部署软连接的坑。a.PHP如果开启Opcache,需要重启PHP,或者清理opcacheb.JavaTomcat是必须要重启,最好每次清理work,tmp缓存目录。二、自动化系统构建实践环境准备首先在执行脚本前,先做好初始化环境,最好是通过saltstack来完成。我这里没有那么多机器,就先用两台演示。linux-node1192.168.90.201linux-node2192.168.90.2021、创建普通用户useraddxuliangweipasswdxuliangwei2、配置密钥3、创建相关目录4、配置Nginx5.配置好git环境centos7部署gitlab克隆项目最终效果如下:剖析脚本查看脚本,具体配和第一部分来解读:执行上线:查看当前版本执行回滚操作查看日志:脚本其他功能当然此脚本功能不仅仅如此,可以通过git分支,gittag包等方式来上线,这些根据贵公司的具体业务来进行调整,也可以自己开发一个web界面来调用此脚本,这样就可以将上线工作交给开发,当然也可以使用开源jenkins来实现。后期更新(如上脚本)+gitlab+jenkins+Sonar构建自动化部署代码,并代码发布前质量管理。

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功