天天看點

svn部署大中小型企業上線解決方案(四)

一、svn目錄組織結構說明

    --branch 分支,為測試時使用,幾天以上的項目必須開分支,測試需要本分支通過,主線合并到分支通過,才能合并到主線進行測試

    --tags 版本記錄使用

    --trunk 主線,與正式線相對應,當天不上線檔案不允許送出

二、中型企業上線解決方案

<a href="http://s3.51cto.com/wyfs02/M01/6E/A1/wKioL1WBQ2_iRX0zAAWtWmNWWTc740.jpg" target="_blank"></a>

規範運維人員操作步聚,制這統一操作腳本,備份檔案名稱,備份檔案路徑。使操作人性化,統一化.

三、大型公司解決上線方案

<a href="http://s3.51cto.com/wyfs02/M00/6E/A1/wKioL1WBRCXAIlgxAANkXbYy5dk779.jpg" target="_blank"></a>

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,如需轉載請自行聯系原作者