灰度釋出(又稱為金絲雀釋出)是一種平滑過渡的釋出方式,將老版本應用與新版本應用同時部署在環境中,讓一部分使用者繼續使用老版本應用,一部分使用者開始使用新版本應用,然後根據使用者使用情況調整新版本流量佔比,逐步把所有使用者都遷移到新版本應用。
1.應用場景
網際網路產品需要快速迭代開發上線,同時又要保證質量。為保證剛上線的系統出現問題後可以很快控制影響,需要設計一套灰度釋出系統,按照發布策略選取部分使用者流量,先行使用新版本應用,然後透過收集這部分使用者對新版本應用的反饋,以及新版本應用的日誌、效能、穩定性等指標來評審新版應用。根據評審情況,決定是否繼續增加新版本的應用例項和流量,直至全量升級,或者發現問題後及時回滾到老版本。
2.準備工作
- 將您的老版本業務和新版本業務分別部署在不同的伺服器,為了增加業務處理能力,請分別部署在多臺伺服器上。
- 建立ALB例項,基礎版ALB例項不支援條件型別為Cookie的規則,需要建立標準版ALB例項。具體操作,請參見建立應用型負載均衡。
- 建立伺服器組,將承載老版本應用和新版本應用的伺服器組分別加入不同的伺服器組。具體操作,請參見建立和管理伺服器組。
- 建立監聽,並將監聽預設伺服器組設定為老版本應用伺服器組。具體操作,請參見新增HTTP監聽、新增HTTPS監聽或新增QUIC監聽。
此時使用者請求將全部轉發至老版本應用。本文提供以下三種不同的灰度方式,您可以根據需要選擇一種或多種搭配使用。
3.基於HTTP標頭實現灰度釋出
本示例將使用者請求中HTTP標頭鍵是user-agent、值是*Mozilla/4.0*的訪問轉發至新版本應用。
- 登入應用型負載均衡ALB控制檯。
- 在頂部選單欄,選擇ALB例項所屬的地域。
- 在例項頁面,單擊目標例項ID。
- 在監聽頁籤,找到目標監聽,然後在操作列單擊檢視/編輯轉發規則。
- 在轉發規則頁籤,單擊插入新規則。
- 配置轉發規則,然後單擊確定。
- 轉發條件:在下拉選單中選擇HTTP標頭,然後將鍵設定為user-agent,值設定為*Mozilla/4.0*。
- 轉發動作:在下拉選單中選擇轉發至,然後選擇新版本應用對應的伺服器。
更多引數說明,請參見配置監聽轉發規則。
說明
您可以根據需要增加轉發條件來增加新版本應用的流量,待執行一段時間穩定後,將所有的流量從老版本應用切換到新版本應用中,平滑地將老版本應用下線。
4.基於Cookie實現灰度釋出
本示例將使用者請求中Cookie為key:value的訪問轉發至新版本應用。
- 登入應用型負載均衡ALB控制檯。
- 在頂部選單欄,選擇ALB例項所屬的地域。
- 在例項頁面,單擊目標例項ID。
- 在監聽頁籤,找到目標監聽,然後在操作列單擊檢視/編輯轉發規則。
- 在轉發規則頁籤,單擊插入新規則。
- 配置轉發規則,然後單擊確定。
- 轉發條件:在下拉選單中選擇Cookie,然後設定為key:value。
- 轉發動作:在下拉選單中選擇轉發至,然後選擇新版本應用的伺服器。
更多引數說明,請參見配置監聽轉發規則。
說明
您可以根據需要增加轉發條件來增加新版本應用的流量,待執行一段時間穩定後,將所有的流量從老版本應用切換到新版本應用中,平滑地將老版本應用下線。
5.基於不同伺服器組實現灰度釋出
本示例將域名為example.com的訪問分別轉發至老版本應用和新版本應用,且老版本應用和新版本應用接收的請求比重分別為80%和20%。
- 登入應用型負載均衡ALB控制檯。
- 在頂部選單欄,選擇ALB例項所屬的地域。
- 在例項頁面,單擊目標例項ID。
- 在監聽頁籤,找到目標監聽,然後在操作列單擊檢視/編輯轉發規則。
- 在轉發規則頁籤,單擊插入新規則。
- 配置轉發規則,然後單擊確定。
- 轉發條件:在下拉選單中選擇域名,然後將域名設定為example.com。
- 轉發動作:在下拉選單中選擇轉發至,然後選擇老版本應用伺服器組(權重80)和新版本應用伺服器組(權重20)。
更多引數說明,請參見配置監聽轉發規則。
您可以根據需要調整伺服器組權重來增加新版本應用的流量佔比,待執行一段時間穩定後,將所有的流量從老版本應用切換到新版本應用中,平滑地將老版本應用下線。
參考連結:https://help.aliyun.com/zh/slb/application-load-balancer/use-cases/use-alb-to-implement-canary-releases?spm=a2c4g.11186623.0.i6#section-ld2-77x-2ap