灰階發布(又稱為金絲雀發布)是一種平滑過渡的發布方式,將老版本應用與新版本應用同時部署在環境中,讓一部分使用者繼續使用老版本應用,一部分使用者開始使用新版本應用,然後根據使用者使用方式調整新版本流量佔比,逐步把所有使用者都遷移到新版本應用。
應用情境
互連網產品需要快速反覆式開發法上線,同時又要保證品質。為保證剛上線的系統出現問題後可以很快控制影響,需要設計一套灰階發布系統,按照發布策略選取部分使用者流量,先行使用新版本應用,然後通過收集這部分使用者對新版本應用的反饋,以及新版本應用的日誌、效能、穩定性等指標來評審新版應用。根據評審情況,決定是否繼續增加新版本的應用執行個體和流量,直至全量升級,或者發現問題後及時復原到老版本。
準備工作
-
將您的老版本業務和新版本業務分別部署在不同的伺服器,為了增加業務處理能力,請分別部署在多台伺服器上。
-
建立ALB執行個體,基礎版ALB執行個體不支援條件類型為Cookie的規則,需要建立標準版ALB執行個體。具體操作,請參見建立和管理ALB執行個體。
-
建立伺服器組,將承載老版本應用和新版本應用的伺服器組分別加入不同的伺服器組。具體操作,請參見建立和管理伺服器組。
-
建立監聽,並將監聽預設伺服器組設定為老版本應用伺服器組。具體操作,請參見添加HTTP監聽、添加HTTPS監聽或添加QUIC監聽。
此時使用者請求將全部轉寄至老版本應用。本文提供以下三種不同的灰階方式,您可以根據需要選擇一種或多種搭配使用。
基於HTTP標題實現灰階發布
本樣本將使用者請求中HTTP標題鍵是user-agent、值是*Mozilla/4.0*的訪問轉寄至新版本應用。
-
在頂部功能表列,選擇ALB執行個體所屬的地區。
-
在執行個體頁面,單擊目標執行個體ID。
-
在監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
-
在轉寄規則頁簽,單擊插入新規則。
-
配置轉寄規則,然後單擊確定。
-
轉寄條件:在下拉式清單中選擇HTTP標題,然後將鍵設定為user-agent,值設定為*Mozilla/4.0*。
-
轉寄動作:在下拉式清單中選擇轉寄至,然後選擇新版本應用對應的伺服器。
更多參數說明,請參見配置監聽轉寄規則。
說明您可以根據需要增加轉寄條件來增加新版本應用的流量,待運行一段時間穩定後,將所有的流量從老版本應用程式切換到新版本應用中,平滑地將老版本應用下線。
-
基於Cookie實現灰階發布
本樣本將使用者請求中Cookie為key:value的訪問轉寄至新版本應用。
-
在頂部功能表列,選擇ALB執行個體所屬的地區。
-
在執行個體頁面,單擊目標執行個體ID。
-
在監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
-
在轉寄規則頁簽,單擊插入新規則。
-
配置轉寄規則,然後單擊確定。
-
轉寄條件:在下拉式清單中選擇Cookie,然後設定為key:value。
-
轉寄動作:在下拉式清單中選擇轉寄至,然後選擇新版本應用的伺服器。
更多參數說明,請參見配置監聽轉寄規則。
說明您可以根據需要增加轉寄條件來增加新版本應用的流量,待運行一段時間穩定後,將所有的流量從老版本應用程式切換到新版本應用中,平滑地將老版本應用下線。
-
基於不同伺服器組實現灰階發布
本樣本將網域名稱為example.com的訪問分別轉寄至老版本應用和新版本應用,且老版本應用和新版本應用接收的請求比重分別為80%和20%。
-
在頂部功能表列,選擇ALB執行個體所屬的地區。
-
在執行個體頁面,單擊目標執行個體ID。
-
在監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
-
在轉寄規則頁簽,單擊插入新規則。
-
配置轉寄規則,然後單擊確定。
-
轉寄條件:在下拉式清單中選擇網域名稱,然後將網域名稱設定為example.com。
-
轉寄動作:在下拉式清單中選擇轉寄至,然後選擇老版本應用伺服器組(權重80)和新版本應用伺服器組(權重20)。
更多參數說明,請參見配置監聽轉寄規則。
說明您可以根據需要調整伺服器組權重來增加新版本應用的流量佔比,待運行一段時間穩定後,將所有的流量從老版本應用程式切換到新版本應用中,平滑地將老版本應用下線。
-