DevOps之不中斷服務的藍綠部署

Blue/Green Deployment(藍綠部署/藍綠髮布)詳解

  1. 藍綠部署的目的:減少發佈時的中斷時間、能夠快速撤回發佈。
    通俗來說就是在不停老版本服務情況下,部署新版本然後進行測試,確認OK,將流量切到新版本,然後老版本同時也升級到新版本。

    It’s basically a technique for releasing your application in a
    predictable manner with an goal of reducing any downtime associated
    with a release. It’s a quick way to prime your app before releasing,
    and also quickly roll back if you find issues.

  2. 藍綠部署的特點:
    藍綠部署無需停機,並且風險較小。

  3. 藍綠部署的原理

    藍綠部署原理很簡單,就是通過冗餘來解決問題。
    項目最初沒有任何系統故沒有藍綠之分。第一套系統開發完成,直接上線,這個過程只有一個系統,也沒有藍綠之分。後來,開發了新版本,要用新版本替換線上的舊版本,在線上的系統之外,搭建了一個使用新版本代碼的全新系統。 這時候,一共就有兩套系統(藍綠配置)在運行。
    通常生產環境需要兩套系統(藍綠配置),一組是active的生產環境即對外提供服務的老系統配置(綠配置),一組是inactive的配置(藍配置)。兩套系統都是功能完善的,並且正在運行的系統,只是系統版本和對外服務情況不同。

  4. 藍綠部署的過程

    4.1 初始狀態:

    部署服務版本A的應用,用戶訪問的時候,所有外部請求的流量都在這個A服務版本即綠色配置(active)上
    DevOps之藍綠部署
    4.2 部署服務版本B的應用:

    服務版本B的代碼與服務版本A不同(eg:新功能、Bug修復等)。當你想要升級到服務版本B,在即藍色環境(inactive)中進行操作

    4.3將流量從服務版本A切換到服務版本B。
    DevOps之藍綠部署
    4.4監測服務版本B 是否有故障和異常

    當確信對外提供服務的藍色系統B工作正常,服務版本B成爲新的active(綠配置),刪除服務版本A上正在使用的資源(例如實例)服務版本A成爲新的inactive(藍配置)用於部署下一個藍色系統。如果運行出現了問題,可以通過負載均衡器指向快速回滾到之前的綠色環境。

  5. 藍綠部署的優點

    5.1 在藍綠部署過程中無需停機,老版本的狀態不受影響,應用始終在線,風險較小。

    5.2 可以始終很放心的去部署not active環境,因爲並沒有修改綠色系統老版本的任何內容,如果出錯並不影響生產環境的服務。

    5.3 出現問題,可以在非常短的時間內切換回綠色系統,就完成了回滾。只要老版本的資源不被刪除,理論上,可以在任何時間回滾到老版本。

  6. 藍綠部署的缺點

    6.1 當你切換到藍色環境時,需要妥當處理未完成的業務和新的業務。如果你的數據庫後端無法處理,會是一個比較麻煩的問題;

    6.2 可能會出現需要同時處理“微服務架構應用”和“傳統架構應用”的情況,如果在藍綠部署中協調不好這兩者,還是有可能會導致服務停止。

    6.3 冗餘產生額外維護、配置的成本,以及服務器本身運行的開銷。

  7. 藍綠部署的注意事項

    7.1 需要提前考慮數據庫與應用部署同步遷移 /回滾的問題。

    7.2 藍綠部署需要有基礎設施支持。

    7.3 在非隔離基礎架構( VM 、 Docker 等)上執行藍綠部署,藍色環境和綠色環境有被摧毀的風險

  8. 小結
    藍綠部署只是上線策略中的一種,它不是可以應對所有情況的萬能方案。
    藍綠部署能夠簡單快捷實施的前提假設是目標系統是非常內聚的,如果目標系統相當複雜,那麼如何切換、兩套系統的數據是否需要以及如何同步等,都需要仔細考慮。

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