svn部署大中小型企业上线解决方案(四)

一、svn目录组织结构说明

    --branch 分支,为测试时使用,几天以上的项目必须开分支,测试需要本分支通过,主线合并到分支通过,才能合并到主线进行测试

    --tags 版本记录使用

    --trunk 主线,与正式线相对应,当天不上线文件不允许提交

二、中型企业上线解决方案

svn部署大中小型企业上线解决方案(四)

规范运维人员操作步聚,制这统一操作脚本,备份文件名称,备份文件路径。使操作人性化,统一化.


三、大型公司解决上线方案

svn部署大中小型企业上线解决方案(四)

1、特别是JAVA代码环境,上线时,有数台机器同时需要更新:

1).本地开发人员取svn代码。当天上线提交到trunk,否则,长期项目单开分支开发,然后在合并主线(trunk)

2).办公内网开发测试时,由开发人员或配置人员通过部署平台jenkins实现统一部署,(即在部署平台上控制开发机器从svn取代码,编译,打包,发布到开发机包如id_dep.war).

3).开发人员通知测试人员或一起测试,没有问题后,打上tag标记。

4).配置管管理员,根据上步的tag标记,checkout出代码,并配置好IDC测试环境的所有配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内统一分发服务器。

5).配置管理员或SA上线人员,把分发的内容推送到相关测试服务器(报名如id_test.war),然后通知开发及测试人员进行测试。如果有问题向上回退。

6).如果没有问题,继续打好tag,此时,配置上步tag标记,checkout出代码,并配置好IDC环境所有的配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内统一分发服务器。

7).配置管理员或SA上线人员,把分发的内容推送到相关正式服务器(报名idc_product.war),然后通知开发及测试人员进行测试。如果没有问题直接发布回滚指令。

  

  IDC正式上线的过程对于JAVA程序,可以是AB组分组上线的思路,即平滑下线一半的服务器,然后发布更新代码测试,无问题后,挂上服务器,同时在平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后就挂上线)

  对于PHP上线方法:发布时可以用发布到正式线临时目录 ,然后mv或更改link的方式发布到正式上线目录 ,不需要重启

  

  对于java上线方法:需要分组平滑下上线(如从负载均衡上摘掉部分服务器),发布代码后,重启服务器测试

  

  

2、上线解决方案注意事项

 1).办公室测试环境--IDC测试环境---正式生产环境,所有软件均应版本统一(如:操作系统,web服务器,jdk,php,tomcat,resin等版本)

 2).开发团队小组测试环境测试(该测试环境属于开发小组),有问题返回给某开发人员重新开发。

 3).有专门的测试工程师,程序有问题直接返回给开发人员(此时返回的一般为程序的BUG,称为BUG库),无问题进行IDCi测试

 4).IDC测试由测试人员和运维人员参与,叫IDCtest,进行程序的压力测试,有问题直接返回给开发人员,无问题进行线上环境上线

 5).数台服务器代码分发上线方案举例(JAVA程序)

      A:假设同业务服务器有6台,将服务器分为A,B两组,A组三台,B组三台,先对A组进行从负载均衡器上平滑下线,B组正常提供服务,避免服务器因上线影响业务。

      B:下线过程是通过脚本将A组服务器从RS池(LVS,NGINX,HAPROXY,F5等均有平滑方案)中踢出,避免负裁均衡器将请求发送给A组服务器(此时的时间应该为网站流量少时,一般为晚上)

      C:将代码分发到A组服务器的站点目录下,对A组服务器上线并重启服务,并由专业的测试人员进行访问测试,测试成功后,挂上A组的服务器,同时下线B组服务器,B组代码上线操作测试等和A组相同

 6).特别说明:如果PHP程序,则上线可以简单化,直接将上线代码(最好全量)发布到所有上线服务器的特定目录后,分发完成后,一次性mv或ln到站点目录,当然测试是少不了的。

 7).大多数门户的前端页面都已经静态或者cache了,因上经动态的部分访问平时就不会特别多

 

 9、SVN上包含代码和配置

 (1)、SVN上存放程序代码(不含资源,大公司基本资源和程序都是分离的)

 (2)、存放所有服务的配置文件(LAMP环境,如:apache的httpd.conf配置文件)

 (3)、开发小组测试环境使用的配置文件

 (4)、办公测试环使用配置文件

 (5)、IDC测试使用的配置文件

 (6)、线上应用使用的配置文件

 什么时配置管理员?

 就是在开发和运维中间起一个连接纽带的一个职位,这个职位一般在大公司会设置,负责SVN的管理,上线管理,申请,协调等工作

 

 

四、平滑代码上线是什么

就是在网站代码更新时,不影响正在浏览用户的正常浏览网页或其正使用的其他相关应用


五、一些软件平滑重启的方式

1)apache的平滑重启

./bin/apachectl gracefull


2)nginx的平滑重启(php-fpm的reload)

./sbin/nginx-s reload


3)nfs网络服务

/etc/init.d/nfs reload


4)lvs/haproxy的服务下载RS的操作


5)F5和Netscaler等也有相应的下线的RS方式










本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1662869,如需转载请自行联系原作者
上一篇:Forrester:用户须谨慎对待云安全


下一篇:Wind River Helix系统及物联网解决方案 简化企业IOT部署