Uso de cambio de tráfico lineal
El cambio lineal del tráfico le permite transferir gradualmente el tráfico de su flota anterior (flota azul) a su nueva flota (flota verde). Con el cambio de tráfico lineal, puede desplazar el tráfico en varios pasos, lo que minimiza la posibilidad de que se produzca una interrupción en su punto de conexión. Esta opción de implementación azul/verde le brinda el control más detallado sobre los cambios de tráfico.
Puede elegir el número de instancias o el porcentaje de la capacidad de la flota verde que se activará en cada paso. Cada paso lineal solo debe representar entre el 10 y el 50 % de la capacidad de la flota verde. Para cada paso, hay un período de espera durante el cual las alarmas de Amazon CloudWatch preespecificadas supervisan las métricas de la flota verde. Cuando finalice el período de cocción y no se active ninguna alarma, la parte activa de su flota verde seguirá recibiendo tráfico y comenzará un nuevo paso. Si las alarmas se activan durante alguno de los períodos de cocción, el 100 % del tráfico de los puntos de conexión se transfiere a la flota azul.
El siguiente diagrama muestra cómo el tráfico lineal desvía el tráfico hacia las flotas azul y verde.
Una vez que SageMaker AI aprovisiona la nueva flota, la primera parte de la flota verde se enciende y recibe tráfico. SageMaker AI desactiva una parte del mismo tamaño de la flota azul y comienza el período de cocción. Si se activa alguna alarma, todo el tráfico de los puntos de conexión se transfiere a la flota azul. Al finalizar el período de cocción, comienza el siguiente paso. Otra parte de la flota verde se activa y recibe tráfico, otra parte de la flota azul se desactiva y comienza otro período de cocción. El mismo proceso se repite hasta que la flota azul esté completamente desactivada y la flota verde esté completamente activa y reciba todo el tráfico. Si se activa una alarma en cualquier momento, SageMaker AI finaliza el proceso de cambio y el 100 % del tráfico vuelve a la flota azul.
Requisitos previos
Antes de configurar una implementación con un cambio de tráfico lineal, debe crear alarmas de CloudWatch para monitorizar las métricas de su punto de conexión. Las alarmas están activas durante el período de cocción y, si alguna alarma se activa, todo el tráfico de los puntos de conexión se transfiere a la flota azul. Para obtener más información acerca de cómo configurar las alarmas de CloudWatch en un punto de conexión, consulte la página de requisitos previos Configuración y monitorización de la reversión automática. Para obtener más información acerca de la creación de alarmas de CloudWatch, consulte Uso de las alarmas de Amazon CloudWatch en la Guía del usuario de Amazon CloudWatch.
Configurar el cambio de tráfico lineal
Cuando esté preparado para la implementación y haya configurado las alarmas de CloudWatch para su punto de conexión, puede utilizar la API UpdateEndpoint de Amazon SageMaker AI o el comando update-endpoint para iniciar en la AWS CLI para iniciar la implementación.
Temas
Cómo actualizar un punto de conexión (API)
El siguiente ejemplo de la API UpdateEndpoint muestra cómo se puede actualizar un punto de conexión con un cambio de tráfico lineal.
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>" } ] } } )
Para configurar la opción de cambio de tráfico lineal, haga lo siguiente:
En
EndpointName, utilice el nombre del punto de conexión existente que quiera actualizar.En
EndpointConfigName, utilice el nombre de la configuración de punto de conexión que quiera utilizar.En
DeploymentConfigyBlueGreenUpdatePolicy, enTrafficRoutingConfiguration, establezca el parámetroTypeenLINEAR. Esto especifica que la implementación utiliza el desplazamiento lineal del tráfico.En el campo
LinearStepSize, puede cambiar el tamaño de los pasos modificando los parámetrosTypeyValue. EnType, utiliceCAPACITY_PERCENT, es decir, el porcentaje de su flota verde que quiera utilizar como tamaño de paso y, a continuación, establezcaValueen20. En este ejemplo, se activa el 20 % de la capacidad de la flota verde para cada paso de cambio de tráfico. Tenga en cuenta que, al personalizar el tamaño de su paso lineal, solo debe usar pasos que ocupen entre el 10 y el 50 % de la capacidad de la flota verde.En
WaitIntervalInSeconds, utilice300. El parámetro indica a SageMaker AI que espere el período de tiempo especificado (en segundos) entre cada cambio de tráfico. Este intervalo es la duración del período de cocción entre cada paso lineal. En el ejemplo anterior, SageMaker AI espera 5 minutos entre cada cambio de tráfico.En
TerminationWaitInSeconds, utilice300. Este parámetro indica a SageMaker AI que espere el tiempo especificado (en segundos) después de que la flota verde esté completamente activa antes de finalizar las instancias de la flota azul. En este ejemplo, SageMaker AI espera 5 minutos después del último período de cocción antes de cerrar la flota azul.En
MaximumExecutionTimeoutInSeconds, utilice3600. Este parámetro establece el período máximo de tiempo durante el cual puede ejecutarse la implementación antes de que transcurra el tiempo de espera. En el ejemplo anterior, la implementación tiene un límite de 1 hora para finalizar.En
AutoRollbackConfiguration, dentro del campoAlarms, puede añadir sus alarmas de CloudWatch por nombre. Cree una entradaAlarmName:para cada alarma que quiera utilizar.<your-cw-alarm>
Cómo actualizar un punto de conexión con una política de actualización (API) azul/verde existente
Cuando utilice la API CreateEndpoint para crear un punto de conexión, puede especificar, si lo desea, una configuración de implementación para reutilizarla en futuras actualizaciones del punto de conexión. Puede usar las mismas opciones de DeploymentConfig que en el ejemplo anterior de la API UpdateEndpoint. No hay cambios en el comportamiento de la API CreateEndpoint. Al especificar la configuración de implementación, no se realiza automáticamente ninguna actualización azul/verde en el punto de conexión.
La opción de usar una configuración de implementación anterior se produce cuando se usa la API UpdateEndpoint para actualizar el punto de conexión. Al actualizar el punto de conexión, puede utilizar la opción RetainDeploymentConfig para conservar la configuración de implementación que haya especificado al crear el punto de conexión.
Al llamar a la API UpdateEndpoint, establezca RetainDeploymentConfig en True para mantener las opciones DeploymentConfig de la configuración de su punto de conexión original.
response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", RetainDeploymentConfig=True )
Cómo actualizar un punto de conexión (CLI)
Si utiliza el AWS CLI, en el siguiente ejemplo se muestra cómo iniciar una implementación lineal azul/verde mediante el comando 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>"}]}'
Para configurar la opción de cambio de tráfico lineal, haga lo siguiente:
En
endpoint-name, utilice el nombre del punto de conexión que quiera actualizar.En
endpoint-config-name, utilice el nombre de la configuración del punto de conexión que quiera utilizar.En
deployment-config, utilice un objeto JSON BlueGreenUpdatePolicy.
nota
Si prefiere guardar el objeto JSON en un archivo, consulte Generación de parámetros esquemáticos AWS CLI y de entrada en la Guía del usuario de AWS CLI.