企业的代码发布解决方案
小型公司(3-20台服务器)
使用FTP之间上传代码到服务器(使用 rz 的方式)
多使用PHP语言进行开发
缺乏测试人员,对网站用户的体验比较差
小公司上线的建议:(上线:提供服务 下线:停止服务 平滑上下线)
开发人员在个人电脑要搭建LAMP环境测试好开发好的网站代码,要进过IDC机房的测试
程序代码上线要规定时间,如3天一次,每次在17点左右,尽可能保证用户体验
代码上线之前要备份,先上传到临时目录,再使用mv,尽量减少服务中断的时间(PHP项目)
上线尽可能由运维人员管理,因为开发在意功能的实现,运维更加关注性能的优化和服务的稳定。
中型公司
开发者内部测试
测试组内外网测试
普通升级上线,由测试组进行;重大升级,由运维组备份后进行上线
运维组负责服务故障时的,代码回滚
大型公司
Java上线方案
配置管理员:用于协调开发人员和运维人员。
Jenkins工具能够自动地将SVN中的代码及配置(如nginx.conf、redis.conf),打包发布运行到办公室开发环境中,进行测试
完成内网测试后,将代码和配置推送到IDC统一分发管理服务器,进行IDC测试后,再平滑发布到正式的IDC环境中。
之后再变更配置环境要经过上述的测试发布流程。
注:
1.办公室环境和IDC环境的区别在于IP地址和配置参数大小,其他部分要统一版本。
2.配置管理人员会将代码打包成war上传到SVN中,再通过SVN发送到IDC统一分发管理服务器
idc_dep_时间.war 办公室测试包
idc_test_时间.war IDC测试包
idc_produc_时间.war 正式包
3.针对普通业务的上线使用预发机制(观察期为半小时左右),对于重要业务使用灰度发布(观察期为24小时左右)
java平滑上线的方案:
在流量低谷时,将服务器分成A、B两组,先让A组服务器下线(负载均衡服务器lvs 断开A组服务器)
更改A组服务器代码和配置后,重启服务器后,分配到测试lvs中进行测试(此过程控制在10分钟内)
断开测试lv,将A组挂到lvs中,瞬间关闭B组连接
之后对B组进行代码和配置进行更改后,重启服务器,进过测试后,挂会到主lvs,完成平滑上线
注:
1.一般是分两组 ,分3组存在新旧并存的问题,不是数量上的分组而是类型的分组。
2.需要重启服务器,避免加载配置有误。
3.如果存在DNS智能解析,可以分地区逐步上线。
4.越靠近前段的功能上线越频繁,后端的功能越低频。
5.nginx支持平滑重启reload ,拒绝新的请求线程,但不会断开正在提供服务的线程。
6.使用全量上线而不是增量上线,最大程度保证以SVN中央库为准
7.大企业通常会使用Python制作可视化的应用可视化web部署平台,使用Python编写脚本进行自动化发布,这种平台可能涉及权限审批流程、故障跟踪平台等。
---------------------
作者:热心市民罗先生
来源:CSDN
原文:https://blog.csdn.net/weixin_40990818/article/details/93075081
版权声明:本文为博主原创文章,转载请附上博文链接!