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