本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用线性流量切换
利用线性流量转移,您可以逐步将流量从旧实例集(蓝色实例集)转移到新实例集(绿色实例集)。通过线性流量转移,您可以分多个步骤转移流量,从而最大限度地减少端点中断的可能性。此蓝绿部署选项让您可对流量转移进行最精细的控制。
您可以选择在每个步骤中,激活的实例数或者绿色实例集容量的百分比。每个线性步骤选择的容量只应为绿色实例集容量的 10-50% 之间。对于每个步骤,都有一个烘焙期,在此期间,您预先指定的Amazon CloudWatch 警报会监控绿色车队的指标。烘焙期结束并且没有触发警报后,绿色实例集的活跃部分将继续接收流量,并开始新的步骤。如果在任意烘焙期中触发警报,则所有端点流量回滚到蓝色实例集。
下图显示了线性流量转移如何将流量路由到蓝色和绿色实例集。
配置 SageMaker 好新车队后,绿色车队的第一部分就会开启并接收流量。 SageMaker 停用蓝色舰队中相同规模的部分,烘焙期开始。如果触发了任意警报,所有端点流量都会回滚到蓝色实例集。如果烘焙期结束,则开始下一步。继续激活绿色实例集的另一部分并接收流量,停用一部分蓝色实例集,开始下一个烘焙期。重复相同的流程,直到蓝色实例集完全停用,绿色实例集全部处于活动状态并接收所有流量。如果警报在任何时候响起,就会 SageMaker 终止换档过程,100% 的流量会回滚到蓝色车队。
先决条件
在设置线性流量转移的部署之前,您必须创建 CloudWatch 警报以监控来自终端节点的指标。警报在烘焙期间处于活动状态,如果触发了警报,则所有端点流量都会回滚到蓝色实例集。要了解如何在端点上设置 CloudWatch警报,请参阅先决条件页面自动回滚配置和监控。要了解有关 CloudWatch 警报的更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch 警报。
配置线性流量转移
准备好部署并设置终端节点 CloudWatch 警报后,即可使用 Amazon SageMaker UpdateEndpointAPI或 update-endpoin t 命令启动部 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
,请使用要使用的端点配置的名称。在
DeploymentConfig
和BlueGreenUpdatePolicy
下的TrafficRoutingConfiguration
中,将Type
参数设置为LINEAR
。这指定了部署使用线性流量转移。在
LinearStepSize
字段中,您可以通过修改Type
和Value
参数来更改步骤的大小。对于Type
,请使用CAPACITY_PERCENT
,此值表示您要用作步骤大小的绿色实例集的百分比,然后将Value
设置为20
。在此示例中,您的每个流量转移步骤都可开启绿色实例集容量的 20%。请注意,在自定义线性步骤大小时,您使用的步骤只应弃用绿色实例集容量的 10-50%。对于
WaitIntervalInSeconds
,请使用300
。该参数告诉 SageMaker 您在每次流量转移之间等待指定的时间(以秒为单位)。此间隔是每个线性步骤之间的烘焙期的持续时间。在前面的示例中,每次流量转移之间 SageMaker 等待 5 分钟。对于
TerminationWaitInSeconds
,请使用300
。此参数告诉您在绿色队列完全处于活动状态后等待指定的时间( SageMaker 以秒为单位),然后再终止蓝色队列中的实例。在此示例中,在最后一个烘焙期结束后 SageMaker 等待 5 分钟,然后才终止蓝色舰队。对于
MaximumExecutionTimeoutInSeconds
,请使用3600
。此参数设置部署在超时之前可以运行的最长时间。在前面的示例中,您的部署的完成时间限制为 1 小时。在该
Alarms
字段中,您可以按名称添加 CloudWatch 警报。AutoRollbackConfiguration
为要使用的每个警报创建一个AlarmName:
条目。<your-cw-alarm>
如何使用现有的蓝/绿更新策略更新终端节点 () API
使用创建终端节点时,您可以选择指定部署配置,以便在将来的终端节点更新中重复使用。CreateEndpointAPI您可以使用与上一个 UpdateEndpoint API示例相同的DeploymentConfig
选项。 CreateEndpoint API行为没有变化。指定部署配置不会自动在端点上执行蓝绿更新。
使用更新您的终端节点时,UpdateEndpointAPI可以选择使用先前的部署配置。更新端点时,您可以使用 RetainDeploymentConfig
选项,以保留创建端点时您指定的部署配置。
调用时 UpdateEndpointAPI,请RetainDeploymentConfig
将其设置True
为以保留原始终端节点配置中的DeploymentConfig
选项。
response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", RetainDeploymentConfig=True )
如何更新端点 (CLI)
如果您使用的是 AWS CLI,则以下示例说明如何使用 update-end p oint 命令启动蓝/绿线性部署。
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 骨架和输入参数。