文章目錄
-
-
- 運維釋出/部署的方式
-
- 藍綠部署
-
-
- 概述
- 特點
- 布署過程
- 小結
- 注意事項
- 特點
- 适用場景
-
- 灰階釋出(金絲雀釋出)
-
-
- 灰階釋出/金絲雀釋出由以下幾個步驟組成:
- 好處
-
- 滾動釋出
-
-
- 特點
- 缺點
- 紅黑部署
-
-
運維釋出/部署的方式
藍綠部署
概述
藍綠部署是不停老版本,部署新版本然後進行測試,确認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。
紅黑部署的好處是服務始終線上,同時采用不可變部署的方式,也不像藍綠部署一樣得保持備援的服務始終線上。
需要注意: 在藍綠色部署中,兩個版本可能暫時同時擷取請求,而在紅黑中,隻有一個版本在任何時間點獲得流量。