藍綠髮布

原文鏈接:https://www.jianshu.com/p/1ab0d2f86c11

藍綠部署是最常見的一種不需要停機的部署方式,是一種以可預測的方式發佈應用的技術,目的是減少發佈過程中服務停止的時間。

藍綠髮布的基本原理:

藍綠部署原理上很簡單,就是通過冗餘來解決問題。通常生產環境需要兩組配置(藍綠配置),一組是active的生產環境的配置(綠配置),一組是inactive的配置(藍綠配置)。用戶訪問的時候,只會讓用戶訪問active的服務器集羣。在綠色環境(active)運行當前生產環境中的應用,也就是舊版本應用version1。當你想要升級到version2 ,在藍色環境(inactive)中進行操作,即部署新版本應用,並進行測試。如果測試沒問題,就可以把負載均衡器/反向代理/路由指向藍色環境了。隨後需要監測新版本應用,也就是version2 是否有故障和異常。如果運行良好,就可以刪除version1 使用的資源。如果運行出現了問題,可以通過負載均衡器指向快速回滾到綠色環境。

藍綠髮布的優點:

這種方式的好處在你可以始終很放心的去部署not active環境,如果出錯並不影響生產環境的服務,如果切換後出現問題,也可以在非常短的時間內把再做一次切換,就完成了回滾。而且同時在線的只有一個版本。藍綠部署無需停機,並且風險較小。
(1) 部署版本1的應用(一開始的狀態),所有外部請求的流量都打到這個版本上。
(2) 部署版本2的應用,版本2的代碼與版本1不同(新功能、Bug修復等)。
(3) 將流量從版本1切換到版本2。
(4) 如版本2測試正常,就刪除版本1正在使用的資源(例如實例),從此正式用版本2。
從過程不難發現,在部署的過程中,應用始終在線。並且,新版本上線的過程中,並沒有修改老版本的任何內容,在部署期間,老版本的狀態不受影響。這樣風險很小,並且,只要老版本的資源不被刪除,理論上,可以在任何時間回滾到老版本。

藍綠髮布的弱點:

使用藍綠髮布需要注意的一些細節包括:
1、當切換到藍色環境時,需要妥當處理未完成的業務和新的業務。如果數據庫後端無法處理,會是一個比較麻煩的問題。
2、有可能會出現需要同時處理“微服務架構應用”和“傳統架構應用”的情況,如果在藍綠部署中協調不好這兩者,還是有可能導致服務停止;
3、需要提前考慮數據庫與應用部署同步遷移/回滾的問題。
4、藍綠髮布需要有基礎設施支持。
5、在非隔離基礎架構( VM 、 Docker 等)上執行藍綠髮布,藍色環境和綠色環境有被摧毀的風險。
6、另外,這種方式不好的地方還在於冗餘產生的額外維護、配置的成本,以及服務器本身運行的開銷。

藍綠髮布適用的場景:

1、不停止老版本,額外搞一套新版本,等測試發現新版本OK後,刪除老版本。
2、藍綠髮布是一種用於升級與更新的發佈策略,部署的最小維度是容器,而發佈的最小維度是應用。
3、藍綠髮布對於增量升級有比較好的支持,但是對於涉及數據表結構變更等等不可逆轉的升級,並不完全合適用藍綠髮布來實現,需要結合一些業務的邏輯以及數據遷移與回滾的策略纔可以完全滿足需求。

總結一下

之前公司就是用類似於藍綠髮布的方式進行處理的.我們有一個生產域名pro和一個uat域名,我們將需發佈生產的代碼指定到uat域名上,測試人員對這個環境進行測試。如果有問題也不要緊,回滾掉uat即可。如果測試沒問題,將uat域名切換到pro域名,等到下一次生產發佈重複這個操作即可。如果uat環境測試沒問題,將uat切換到pro後因爲併發壓力下導致程序出了問題,則可以立即切回到原來的pro下,如果一週內沒有反饋故障,則我們將原來的pro同步成最新uat發佈的代碼。
        當然,這只是最理想的結果。一個成熟的IT工作者必須要想到一些潛在問題,要時刻警惕可能引發的問題。



作者:jerrik
鏈接:https://www.jianshu.com/p/1ab0d2f86c11
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章