灰度發布(又稱為金絲雀發布)是一種平滑過渡的發布方式,將老版本應用與新版本應用同時部署在環境中,讓一部分用戶繼續使用老版本應用,一部分用戶開始使用新版本應用,然后根據用戶使用情況調整新版本流量占比,逐步把所有用戶都遷移到新版本應用。
應用場景
互聯網產品需要快速迭代開發上線,同時又要保證質量。為保證剛上線的系統出現問題后可以很快控制影響,需要設計一套灰度發布系統,按照發布策略選取部分用戶流量,先行使用新版本應用,然后通過收集這部分用戶對新版本應用的反饋,以及新版本應用的日志、性能、穩定性等指標來評審新版應用。根據評審情況,決定是否繼續增加新版本的應用實例和流量,直至全量升級,或者發現問題后及時回滾到老版本。
準備工作
基于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)。
更多參數說明,請參見配置監聽轉發規則。
說明您可以根據需要調整服務器組權重來增加新版本應用的流量占比,待運行一段時間穩定后,將所有的流量從老版本應用切換到新版本應用中,平滑地將老版本應用下線。