Uso de una actualización de instancias con la omisión de coincidencias
La opción de omisión de coincidencias le dice a Amazon EC2 Auto Scaling que ignore las instancias que ya tienen sus actualizaciones más recientes. De esta forma, no reemplaza más instancias de las necesarias. Esto es útil cuando quiere asegurarse de que su grupo de escalado automático utilice una versión determinada de la plantilla de lanzamiento y solo sustituya las instancias que usan una versión diferente.
Tenga en cuenta las siguientes consideraciones para omitir coincidencias:
-
Si comienza una actualización de instancias con la omisión de coincidencias y una configuración deseada, Amazon EC2 Auto Scaling comprueba si hay instancias que coincidan con su configuración deseada. A continuación, solo reemplaza las instancias que no coincidan con la configuración deseada. Cuando la actualización de instancias se lleva a cabo correctamente, Amazon EC2 Auto Scaling actualiza el grupo para que coincida con la configuración deseada.
-
Si omite las coincidencias al iniciar una actualización de instancias, pero no especifica la configuración deseada, Amazon EC2 Auto Scaling comprobará si alguna instancia coincide con la configuración que guardó por última vez en el grupo de escalado automático. A continuación, solo reemplaza las instancias que no coincidan con la última configuración guardada.
-
Puede utilizar la omisión de coincidencias con una nueva plantilla de lanzamiento, una nueva versión de la plantilla de lanzamiento actual o un conjunto de tipos de instancia. Si habilita la omisión de coincidencias, pero ninguna de estas opciones cambia, la actualización de instancias se ejecutará inmediatamente sin reemplazar ninguna instancia. Si ha efectuado otros cambios en la configuración deseada (como cambiar la estrategia de asignación de spot), Amazon EC2 Auto Scaling espera a que se realice correctamente la actualización de instancias. A continuación, actualiza la configuración del grupo de escalado automático para reflejar la nueva configuración deseada.
-
No puede utilizar la omisión de coincidencias con una configuración de lanzamiento nueva.
-
Al iniciar una actualización de instancias y proporcionar una configuración deseada, Amazon EC2 Auto Scaling se asegura de que todas las instancias utilicen la configuración deseada. Por lo tanto, si especifica
$Defaulto$Latestcomo la versión deseada para su plantilla de lanzamiento y, a continuación, crea una nueva versión de la plantilla de lanzamiento mientras se está actualizando la instancia, todas las instancias que ya se hayan reemplazado volverán a sustituirse. -
La omisión de coincidencias no sabe si un script de datos de usuario de la plantilla de lanzamiento extraerá el código actualizado y lo instalará en nuevas instancias. Como resultado, es posible que, al omitir las coincidencias, no se reemplacen las instancias que tengan instalado un código desactualizado. En este caso, debe desactivar la omisión de coincidencias para asegurarse de que todas las instancias reciban el código más reciente, incluso sin actualizar la versión de la plantilla de inicialziación.
Esta sección incluye instrucciones para AWS CLI que indican cómo comenzar una actualización de instancias con la opción de omisión de coincidencias habilitada. Para obtener instrucciones sobre cómo utilizar la consola, consulte Inicio de una actualización de instancias (consola).
Siga los pasos de esta sección para utilizar AWS CLI a fin de hacer lo siguiente:
-
Cree la plantilla de lanzamiento que quiera aplicar a las instancias.
-
Comience una actualización de instancias para aplicar la plantilla de lanzamiento a un grupo de escalado automático. Si no habilita la omisión de coincidencias, se reemplazarán todas las instancias. Esto se aplica incluso si la plantilla de lanzamiento utilizada para aprovisionar la instancia es la misma que se especificó para la configuración deseada.
Uso de la omisión de coincidencias con una nueva plantilla de lanzamiento
-
Utilice el comando create-launch-template
a fin de crear una nueva plantilla de lanzamiento para el grupo de escalado automático. Incluya la opción --launch-template-datay la entrada JSON que define los detalles de las instancias que se crean para el grupo de escalado automático.Por ejemplo, utilice el siguiente comando para crear una plantilla de lanzamiento básica con el ID de AMI
y el tipo de instanciaami-0123456789abcdef0.t2.microaws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"ImageId":"ami-0123456789abcdef0","InstanceType":"t2.micro"}'Si se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-30T18:16:06.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }Para obtener más información, consulte Ejemplos para crear y administrar plantillas de lanzamiento con la AWS CLI.
-
Use el comando start-instance-refresh
para iniciar el flujo de trabajo de reemplazo de instancias y aplicar la nueva plantilla de lanzamiento con el ID . Como la plantilla de lanzamiento es nueva, solo tiene una versión. Esto significa que la versiónlt-068f72b729example1de la plantilla de lanzamiento es el objetivo de esta actualización de instancias. Si se produce un evento de escalado horizontal durante la actualización de instancias y Amazon EC2 Auto Scaling aprovisiona nuevas instancias con la versión1de esta plantilla de lanzamiento, no se reemplazarán. Cuando se finaliza adecuadamente la operación, la nueva plantilla de lanzamiento se aplica de manera correcta en un grupo de escalado automático.aws autoscaling start-instance-refresh --cli-input-json file://config.jsonContenido de
config.json.{ "AutoScalingGroupName": "my-asg", "DesiredConfiguration": { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "Version": "$Default" } }, "Preferences": { "SkipMatching": true } }Si se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }
Si tiene un grupo de escalado automático con una política de instancias mixtas, siga los pasos de esta sección para utilizar AWS CLI a fin de iniciar una actualización de instancias con omisión de coincidencias. Dispone de las opciones siguientes:
-
Proporcione una nueva plantilla de lanzamiento para aplicarla a todos los tipos de instancias especificados en la política.
-
Proporcione un conjunto actualizado de tipos de instancias cambiando o sin cambiar la plantilla de lanzamiento de la política. Por ejemplo, es posible que quiera alejarse de los tipos de instancias no deseados. Usaría la plantilla de lanzamiento tal como está, sin cambiar la AMI, los grupos de seguridad ni otros detalles de las instancias que se van a reemplazar.
Siga los pasos de una de las siguientes secciones, en función de la opción que se adapte a sus necesidades.
Uso de la omisión de coincidencias con una nueva plantilla de lanzamiento
-
Utilice el comando create-launch-template
a fin de crear una nueva plantilla de lanzamiento para el grupo de escalado automático. Incluya la opción --launch-template-datay la entrada JSON que define los detalles de las instancias que se crean para el grupo de escalado automático.Por ejemplo, utilice el siguiente comando para crear una plantilla de lanzamiento con el ID de AMI
.ami-0123456789abcdef0aws ec2 create-launch-template --launch-template-namemy-new-template--version-descriptionversion1\ --launch-template-data '{"ImageId":"ami-0123456789abcdef0"}'Si se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "LaunchTemplate": { "LaunchTemplateId": "lt-04d5cc9b88example", "LaunchTemplateName": "my-new-template", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-31T15:56:02.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }Para obtener más información, consulte Ejemplos para crear y administrar plantillas de lanzamiento con la AWS CLI.
-
Para ver la política de instancias mixtas existente del grupo de escalado automático, ejecute el comando describe-auto-scaling-groups
. Necesitará esta información en el siguiente paso, cuando inicie la actualización de instancias. El siguiente comando de ejemplo devuelve la política de instancias mixtas configurada para el grupo de escalado automático denominado
.my-asgaws autoscaling describe-auto-scaling-groups --auto-scaling-group-namemy-asgSi se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-old-template", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] } -
Use el comando start-instance-refresh
para iniciar el flujo de trabajo de reemplazo de instancias y aplicar la nueva plantilla de lanzamiento con el ID . Como la plantilla de lanzamiento es nueva, solo tiene una versión. Esto significa que la versiónlt-04d5cc9b88example1de la plantilla de lanzamiento es el objetivo de esta actualización de instancias. Si se produce un evento de escalado horizontal durante la actualización de instancias y Amazon EC2 Auto Scaling aprovisiona nuevas instancias con la versión1de esta plantilla de lanzamiento, no se reemplazarán. Cuando se finaliza adecuadamente la operación, la política de instancias mixtas se aplica de manera correcta en un grupo de escalado automático.aws autoscaling start-instance-refresh --cli-input-json file://config.jsonContenido de
config.json.{ "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-04d5cc9b88example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }Si se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }
En el siguiente procedimiento, proporcionará un conjunto actualizado de tipos de instancias sin cambiar la plantilla de lanzamiento.
Para utilizar la omisión de coincidencias con un conjunto actualizado de tipos de instancias
-
Para ver la política de instancias mixtas existente del grupo de escalado automático, ejecute el comando describe-auto-scaling-groups
. Necesitará esta información en el siguiente paso, cuando inicie la actualización de instancias. El siguiente comando de ejemplo devuelve la política de instancias mixtas configurada para el grupo de escalado automático denominado
.my-asgaws autoscaling describe-auto-scaling-groups --auto-scaling-group-namemy-asgSi se ejecuta correctamente, el comando devolverá información similar a la siguiente.
{ "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-template-for-auto-scaling", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] } -
Use el comando start-instance-refresh
para iniciar el flujo de trabajo de reemplazo de instancias y aplicar las actualizaciones. Si quiere reemplazar las instancias que utilizan tipos de instancia específicos, la configuración deseada debe especificar la política de instancias mixtas solo con los tipos de instancia deseados. Puede elegir si quiere agregar nuevos tipos de instancias en su lugar. El siguiente comando de ejemplo inicia una actualización de instancias sin el tipo de instancia no deseado
. Cuando un tipo de instancia del grupo no coincide con ninguno de los tres tipos de instancias, las instancias se reemplazan. (Tenga en cuenta que una actualización de instancias no elige los tipos de instancia desde los que aprovisionar las nuevas instancias; en su lugar, lo hacen las estrategias de asignación). Cuando se finaliza adecuadamente la operación, la política de instancias mixtas se aplica de manera correcta en un grupo de escalado automático.m5a.largeaws autoscaling start-instance-refresh --cli-input-json file://config.jsonContenido de
config.json{ "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }