线性流量转移 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

线性流量转移

利用线性流量转移,您可以逐步将流量从旧实例集(蓝色实例集)转移到新实例集(绿色实例集)。通过线性流量转移,您可以分多个步骤转移流量,从而最大限度地减少端点中断的可能性。此蓝绿部署选项让您可对流量转移进行最精细的控制。

您可以选择在每个步骤中,激活的实例数或者绿色实例集容量的百分比。每个线性步骤选择的容量只应为绿色实例集容量的 10-50% 之间。每个步骤都有一个烘焙期,在此期间,您预先指定的 Amazon CloudWatch 警报会监控蓝色实例集上的指标。烘焙期结束并且没有触发警报后,绿色实例集的活跃部分将继续接收流量,并开始新的步骤。如果在任意烘焙期中触发警报,则所有端点流量回滚到蓝色实例集。

下图显示了线性流量转移如何将流量路由到蓝色和绿色实例集。

成功将流量从旧实例集线性转移到新实例集的三个步骤,每隔步骤转移 33% 的流量。

SageMaker 预置新实例集之后,将弃用绿色实例集的第一部分并接收流量。SageMaker 在蓝色实例集内停用相同大小的部分,烘焙期开始。如果触发了任意警报,所有端点流量都会回滚到蓝色实例集。如果烘焙期结束,则开始下一步。继续激活绿色实例集的另一部分并接收流量,停用一部分蓝色实例集,开始下一个烘焙期。重复相同的流程,直到蓝色实例集完全停用,绿色实例集全部处于活动状态并接收所有流量。如果在任何时间触发了警报,SageMaker 就会终止切换过程,所有流量将回滚到蓝色实例集。

先决条件

在设置带有线性流量转移的部署之前,您必须创建 CloudWatch 警报以监控端点中的指标。警报在烘焙期间处于活动状态,如果触发了警报,则所有端点流量都会回滚到蓝色实例集。要了解如何在端点上设置 CloudWatch 警报,请参阅先决条件页面自动回滚配置和监控。有关 CloudWatch 警报的更多信息,请参阅《Amazon CloudWatch 用户指南》中的使用 Amazon CloudWatch 警报

配置线性流量转移

在准备好部署并为端点设置了 CloudWatch 警报之后,您可以使用 Amazon SageMaker UpdateEndpoint API 或 Amazon CLI 中的 update-endpoint 命令来启动部署。

如何更新端点 (API)

以下 UpdateEndpoint API 示例展示了如何使用线性流量转移来更新端点。

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,此值表示您要用作步骤大小的绿色实例集的百分比,然后将 Value 设置为 20。在此示例中,您的每个流量转移步骤都可开启绿色实例集容量的 20%。请注意,在自定义线性步骤大小时,您使用的步骤只应弃用绿色实例集容量的 10-50%。

  • 对于 WaitIntervalInSeconds,请使用 300。该参数告知 SageMaker 在每次流量转移之间等待指定的时间量(以秒为单位)。此间隔是每个线性步骤之间的烘焙期的持续时间。在前面的示例中,SageMaker 在每次流量转移之间等待 5 分钟。

  • 对于 TerminationWaitInSeconds,请使用 300。此参数告知 SageMaker 在绿色实例集完全激活后等待指定的时间长度(以秒为单位),然后再终止蓝色实例集内的实例。在此示例中,SageMaker 在最后烘焙期结束后等待了 5 分钟,然后再终止蓝色实例集。

  • 对于 MaximumExecutionTimeoutInSeconds,请使用 3600。此参数设置部署在超时之前可以运行的最长时间。在前面的示例中,您的部署的完成时间限制为 1 小时。

  • AutoRollbackConfigurationAlarms 字段中,您可以按名称添加 CloudWatch 警报。为要使用的每个警报创建一个 AlarmName: <your-cw-alarm> 条目。

如何使用现有的蓝绿更新政策更新端点 (API)

使用 CreateEndpoint API 创建端点时,您可以选择指定部署配置,以便在以后的端点更新中重复使用。您可以使用与之前的 UpdateEndpoint API 示例中相同的 DeploymentConfig 选项。CreateEndpoint API 的行为不会改变。指定部署配置不会自动在端点上执行蓝绿更新。

使用 UpdateEndpoint API 更新您的端点时,会出现使用以前部署配置的选项。更新端点时,您可以使用 RetainDeploymentConfig 选项,以保留创建端点时您指定的部署配置。

调用 UpdateEndpoint API 时,请将 RetainDeploymentConfig 设置为 True,以保留您的原始端点配置的 DeploymentConfig 选项。

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

如何更新端点 (CLI)

如果您使用的是 Amazon CLI,以下示例展示了如何使用 update-endpoint 命令启动蓝绿线性部署。

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,请使用 BlueGreenUpdatePolicy JSON 对象。

注意

如果您希望将 JSON 对象保存在文件中,请参阅《Amazon CLI 用户指南》中的生成 Amazon CLI 骨架和输入参数