天天看點

運維釋出/部署的各種方式

文章目錄

      • 運維釋出/部署的方式
        • 藍綠部署
            • 概述
            • 特點
            • 布署過程
            • 小結
            • 注意事項
            • 特點
            • 适用場景
        • 灰階釋出(金絲雀釋出)
            • 灰階釋出/金絲雀釋出由以下幾個步驟組成:
            • 好處
        • 滾動釋出
            • 特點
            • 缺點
          • 紅黑部署

運維釋出/部署的方式

藍綠部署

概述

藍綠部署是不停老版本,部署新版本然後進行測試,确認OK,将流量切到新版本,然後老版本同時也更新到新版本。

特點

藍綠部署無需停機,并且風險較小。

布署過程

部署版本1的應用(一開始的狀态)

所有外部請求的流量都打到這個版本上。

部署版本2的應用

版本2的代碼與版本1不同(新功能、Bug修複等)。

利用負載均衡将流量從版本1切換到版本2。

如版本2測試正常,就删除版本1正在使用的資源(例如執行個體),從此正式用版本2。

小結

在部署的過程中,應用始終線上,保證系統在不間斷提供服務。新版本上線的過程中,并沒有修改老版本的任何内容,在部署期間,老版本的狀态不受影響。這樣風險很小,并且,隻要老版本的資源不被删除,理論上可以在任何時間復原到老版本。

注意事項

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

特點

優點:更新切換和回退速度非常快。

缺點:切換是全量的,如果 V2 版本有問題,則對使用者體驗有直接影響。 需要兩倍機器資源。

适用場景

對使用者體驗有一定容忍度的場景。

機器資源有富餘或者可以按需配置設定(AWS 雲,或自建容器雲)。

灰階釋出(金絲雀釋出)

金絲雀釋出這個名稱來源于曠工下礦之前會用金絲雀去探毒

灰階釋出/金絲雀釋出由以下幾個步驟組成:

運維釋出/部署的各種方式

在其上可以進行A/B testing,即讓一部分使用者繼續用産品特性A,一部分使用者開始用産品特性B,如果使用者對B沒有什麼反對意見,那麼逐漸擴大範圍,把所有使用者都遷移到B上面來。灰階釋出可以保證整體系統的穩定,在初始灰階的時候就可以發現、調整問題,以保證其影響度。灰階期:灰階釋出開始到結束期間的這一段時間,稱為灰階期。

好處

提前獲得目标使用者的使用回報;

根據回報結果,做到查漏補缺;

發現重大問題,可復原“舊版本”;

補充完善産品不足;

快速驗證産品的 idea。

滾動釋出

滾動釋出是指每次隻更新一個或多個服務,更新完成後加入生産環境,不斷執行這個過程,直到叢集中的全部舊版本更新新版本。

運維釋出/部署的各種方式
  • 紅色:正在更新的執行個體
  • 藍色:更新完成并加入叢集的執行個體
  • 綠色:正在運作的執行個體

特點

  • 使用者無感覺,平滑過渡;
  • 節約資源。

缺點

  • 部署時間慢,取決于每階段更新時間;
  • 釋出政策較複雜;
  • 無法确定OK的環境,不易復原。
紅黑部署
這是Netflix采用的部署手段,Netflix的主要基礎設施是在AWS上,是以它利用AWS的特性,在部署新的版本時,通過AutoScaling Group用包含新版本應用的AMI的LaunchConfiguration建立新的伺服器。測試不通過,找到問題原因後,直接幹掉新生成的伺服器以及Autoscaling Group就可以,測試通過,則将ELB指向新的伺服器叢集,然後銷毀掉舊的伺服器叢集以及AutoScaling Group。

紅黑部署的好處是服務始終線上,同時采用不可變部署的方式,也不像藍綠部署一樣得保持備援的服務始終線上。

需要注意: 在藍綠色部署中,兩個版本可能暫時同時擷取請求,而在紅黑中,隻有一個版本在任何時間點獲得流量。