如果您的應用有多個應用執行個體且需要升級,那麼您可以按需通過灰階或分批發布方式升級應用執行個體版本。本文介紹什麼是灰階發布,以及如何為應用配置灰階發布與復原功能。
前提條件
應用執行個體數大於1。
背景資訊
灰階發布又名金絲雀發布,在原有部署版本可用的情況下,同時部署新版本應用作為金絲雀,測試新版本的效能,在保證整體系統穩定的情況下,協助您儘早發現問題和修複問題。
應用進行灰階發布時,為了保證應用穩定性,您可以自訂執行個體數,但是灰階發布的執行個體數不能超過應用執行個體總數的50%,剩餘的應用執行個體按照指定的批次分批發布。第一批應用執行個體發布後,您可以手動控制來選擇是否繼續下一批。同時,您可以利用這段時間間隙,收集業務側的反饋並決定是否繼續發布。
灰階發布有以下兩種類型。
按照流量比例灰階:例如,配置20%流量進入新版本,80%流量進入老版本。
按照請求內容灰階:例如,請求中帶著特定使用者ID的流量進入新版本,其他流量進入老版本。
與分批發布相比,灰階發布控制流程量粒度更細。關於分批發布的更多資訊,請參見分批發布應用。
情境樣本
某應用程式套件含10個應用執行個體,每個應用執行個體的部署版本為Ver.1版本,現需將每個應用執行個體升級為Ver.2版本。假設選擇2台應用執行個體進行灰階發布,剩下8台應用執行個體分3批進行分批發布,灰階發布流程如下圖所示。
操作步驟
重新部署應用後,該應用將會被重啟。為避免業務中斷等不可預知的錯誤,請在業務低峰期執行部署操作。
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。
在目標應用的基礎資訊頁面,單擊部署應用。
配置部署參數。
說明部署方式由應用首次部署方式決定,請根據所需的部署方式設定參數。
WAR包部署:重新上傳WAR包或者輸入新部署WAR包的地址,並完成相關環境和參數設定。
JAR包部署:重新上傳JAR包或者輸入新部署JAR包的地址,並完成相關環境和參數設定。
ZIP包部署:重新上傳ZIP包或者輸入新部署ZIP包的地址,並完成相關環境和參數設定。
鏡像:在配置鏡像地區,單擊修改鏡像,在修改鏡像面板,重新選擇鏡像倉庫或鏡像版本。
在發布原則設定地區,配置灰階發布。
配置項
說明
發布策略
選擇金絲雀發布(灰階)。
灰階數量
設定首先需要進行灰階發布的應用執行個體數量。
灰階後剩餘批次
灰階發布後,剩餘的應用執行個體按照設定的批次完成發布。
最大峰值
對應K8s中MaxSurge參數,用來指定可以建立的超出期望執行個體數的執行個體數量。
重要此功能目前處於邀約測試階段。如果您想使用此功能,請在DingTalk群(群號:32874633)聯絡相關技術人員開通。
說明若最小存活執行個體數為 100%(即MaxUnavailable為0),則最大峰值不能為0。
以百分比計算時需向上取整。例如設定為25%,如果當前為5個執行個體,則最大峰值為2。
最小存活執行個體數
每次滾動升級的最小存活執行個體數。
說明最小存活執行個體數建議≥1,保證業務不中斷。如果設定為0,應用在升級過程中將會中斷業務。
以百分比計算時需向上取整。例如設定為25%,如果當前為5個執行個體,則最小存活執行個體數為2。
啟用七層流量灰階規則(K8s ingress)
建立規則類型為七層流量灰階(K8s Ingress)的灰階規則後,此功能才會生效。
啟用微服務灰階規則(僅Spring Cloud和Dubbo架構的應用能使用)
建立規則類型為微服務流量灰階的灰階規則後,此功能才會生效。
配置完成後,單擊確定。
通過以下方式驗證配置是否生效。
方式一:在應用的變更記錄頁面,查看應用變更詳情與發布狀態。如果所有批次都執行成功,則說明應用程式更新成功。
方式二:在應用基礎資訊頁面的執行個體列表頁簽,查看執行個體的運行狀態。如果執行狀態顯示為Running,表示應用部署成功。
應用復原
採用灰階發布或者分批發布方式升級應用執行個體時,如果應用執行個體中存在未完成升級的執行個體,則當前應用升級狀態處於進行中。
在即時跟蹤應用升級時,如果首批應用執行個體升級突發異常停止回應,為了保證業務不受影響,請在變更詳情頁面中單擊立即復原,將已升級的執行個體回退至升級前版本,並將配置還原為升級前原有配置。
在應用變更過程中,如果出現部署套件不可用、健全狀態檢查失敗等變更流程異常情況,將導致應用升級失敗,SAE將停止當前應用並進行回退。
在SAE上進行應用升級耗時約為30分鐘,超出該時間後SAE將上報逾時異常並暫停變更流程,請在變更詳情頁面,手動終止發布流程並復原應用。
更多資訊
SAE部署應用完成後,您可以對應用進行如下操作。
操作 | 相關文檔 |
更新、擴縮容、啟停、刪除應用等生命週期管理的操作 | |
自動Auto Scaling、CLB綁定和批量啟停等提升應用效能的操作 | |
日誌管理、監控管理、應用事件查看和變更記錄查看等聚焦應用運行狀態的操作 |