線性流量轉移 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

線性流量轉移

線性流量轉移可讓您逐步將舊機群 (藍色機群) 的流量轉移到新機群 (綠色機群)。透過線性流量轉移,您可以透過多個步驟轉移流量,將端點中斷的機會降到最低。此藍/綠部署選項可讓您對流量轉移進行最精細的控制。

您可以選擇執行個體數量,或綠色機群在每個步驟中啟動的容量百分比。每個線性步驟應該只在綠色機群容量的 10-50% 之間。對於每個步驟,都有一段烘烤期,在此期間,您預先指定的 Amazon CloudWatch 警報會監控綠色叢集上的指標。製作中期間結束並且沒有觸發警示後,綠色機群的作用中部分將繼續接收流量,並開始新步驟。如果在任何製作中期間觸發警示,則 100% 的端點流量會回復到藍色機群。

下圖顯示線性流量轉移如何將流量路由至藍色和綠色機群。

成功的三步驟線性流量轉移,從舊機群轉移至新機群,每一個步驟都會轉移 33% 的流量。

一旦 SageMaker 佈建新車隊,綠色車隊的第一部分就會開啟並接收流量。 SageMaker 停用相同大小的藍色艦隊部分,烘烤期開始。如果觸發任何警示,則所有端點流量都會回復至藍色機群。如果製作中期間結束,則開始後續步驟。綠色機群的另一部分啟動並接收流量,部分藍色機群停用,另一個製作中期間開始。同樣的過程會重複,直到藍色機群完全停用,綠色機群完全作用中並接收所有流量為止。如果警報在任何時候熄滅,則 SageMaker 會終止變速過程,並且 100% 的流量回滾到藍色艦隊。

必要條件

在設定具有線性流量轉移的部署之前,您必須先建立 CloudWatch 警示以監視端點的指標。警示在製作中期間處於啟動中狀態,如果觸發任何警示,則所有端點流量都會回復到藍色機群。要了解如何在端點上設置 CloudWatch警報,請參閱先決條件頁面自動回復組態與監控。若要進一步了解 CloudWatch 警示,請參閱 Amazon 使用 CloudWatch 者指南中的使用 Amazon CloudWatch 警示

設定線性流量轉移

準備好部署並為端點設定 CloudWatch 警示後,您可以使用中的 Amazon SageMaker UpdateEndpointAPI 或更新端點命令 AWS CLI 來啟動部署。

如何更新端點 (API)

下列 UpdateEndpointAPI 範例顯示如何透過線性流量轉移來更新端點。

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "BlueGreenUpdatePolicy": { "TrafficRoutingConfiguration": { "Type": "LINEAR", "LinearStepSize": { "Type": "CAPACITY_PERCENT", "Value": 20 }, "WaitIntervalInSeconds": 300 }, "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600 }, "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" } ] } } )

若要設定線性流量轉移選項,請執行下列動作:

  • EndpointName 中,使用您要更新的現有端點名稱。

  • EndpointConfigName 中,使用您要使用的端點組態名稱。

  • DeploymentConfigBlueGreenUpdatePolicy 下,在 TrafficRoutingConfiguration 中,將 Type 參數設定為 LINEAR。這會指定使用線性流量轉移的部署。

  • LinearStepSize 欄位中,您可以透過修改 TypeValue 參數來變更步驟的大小。在 Type 中,使用 CAPACITY_PERCENT,表示您要用作刻度大小的綠色機群的百分比,然後設置 Value20。在此範例中,您為每個流量轉移步驟開啟綠色機群容量的 20%。請注意,自訂線性刻度大小時,您應該只使用綠色機群容量 10-50% 的刻度。

  • 對於 WaitIntervalInSeconds,請使用 300。參數會告知 SageMaker 要等待每個流量偏移之間的指定時間量 (以秒為單位)。此間隔是每個線性步驟之間製作中期間的持續時間。在前面的例子中, SageMaker 等待每個流量變化之間 5 分鐘。

  • 對於 TerminationWaitInSeconds,請使用 300。此參數會告知 SageMaker 在綠色叢集完全啟動後等待指定的時間量 (以秒為單位),然後終止藍色叢集中的執行個體。在此範例中,請在最後烘烤期間之後 SageMaker 等待 5 分鐘,然後才終止藍色車隊。

  • 對於 MaximumExecutionTimeoutInSeconds,請使用 3600。此參數設定部署逾時前可以執行的時間上限。在上述範例中,您的部署有 1 小時的限制可完成。

  • Alarms欄位中AutoRollbackConfiguration,您可以依名稱新增 CloudWatch 警報。為您要使用的每個警示建立一個 AlarmName: <your-cw-alarm> 項目。

如何使用現有的藍色/綠色更新政策 (API) 來更新端點

使用 CreateEndpointAPI 建立端點時,您可以選擇性地指定部署組態,以便在 future 的端點更新時重複使用。您可以使用與上一個 UpdateEndpoint API 範例相同的DeploymentConfig選項。 CreateEndpoint API 行為沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。

使用 UpdateEndpointAPI 更新端點時,會發生使用先前部署設定的選項。更新端點時,您可以使用 RetainDeploymentConfig 選項來保留您在建立端點時指定的部署組態。

呼叫 UpdateEndpointAPI 時,請設定RetainDeploymentConfigTrue保留原始端點設定中的DeploymentConfig選項。

response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", RetainDeploymentConfig=True )

如何更新端點 (CLI)

如果您使用的是 AWS CLI,下列範例將示範如何使用 update 端點命令啟動藍色/綠色線性部署。

update-endpoint --endpoint-name <your-endpoint-name> --endpoint-config-name <your-config-name> --deployment-config '{"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "LINEAR", "LinearStepSize": {"Type": "CAPACITY_PERCENT", "Value": 20}, "WaitIntervalInSeconds": 300}, "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600}, "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'

若要設定線性流量轉移選項,請執行下列動作:

  • endpoint-name 中,使用您想更新的端點名稱。

  • endpoint-config-name 中,使用您要使用的端點組態名稱。

  • 對於deployment-config,請使用 BlueGreenUpdatePolicyJSON 物件。

注意

如果您想要將 JSON 物件儲存在檔案中,請參閱《AWS CLI 使用指南》中的〈產生 AWS CLI 架構和輸入參數