Uso de una actualización de instancias con la omisión de coincidencias - Amazon EC2 Auto Scaling

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 la configuración deseada, Amazon EC2 Auto Scaling garantiza que todas las instancias usen la configuración deseada. Por lo tanto, si especifica una $Default o $Latest una 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á realizando una actualización de la instancia, todas las instancias que ya se hayan reemplazado volverán a sustituirse.

  • Skip Matching 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 la coincidencia no se reemplacen las instancias que tengan instalado un código desactualizado. En este caso, debes desactivar la omisión de coincidencias para asegurarte de que todas las instancias reciban tu código más reciente, incluso sin actualizar la versión de la plantilla de lanzamiento.

En esta sección, se incluyen AWS CLI instrucciones para iniciar una actualización de instancias con la opción de omitir la coincidencia activada. 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 el y AWS CLI 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
  1. Use el create-launch-templatecomando para crear una nueva plantilla de lanzamiento para su grupo de Auto Scaling. Incluya la opción --launch-template-data y 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 ami-0123456789abcdef0 y el tipo de instancia t2.micro.

    aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --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 de creación y administración de plantillas de lanzamiento con AWS Command Line Interface ()AWS CLI.

  2. Usa el start-instance-refreshcomando para iniciar el flujo de trabajo de reemplazo de instancias y aplica tu nueva plantilla de lanzamiento con el ID lt-068f72b729example. Como la plantilla de lanzamiento es nueva, solo tiene una versión. Esto significa que la versión 1 de 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ón 1 de 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.json

    Contenido 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 Auto Scaling con una política de instancias mixtas, siga los pasos de esta sección AWS CLI para iniciar una actualización de instancias con la opción de omitir la coincidencia. 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
  1. Use el create-launch-templatecomando para crear una nueva plantilla de lanzamiento para su grupo de Auto Scaling. Incluya la opción --launch-template-data y 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-0123456789abcdef0.

    aws ec2 create-launch-template --launch-template-name my-new-template --version-description version1 \ --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 de creación y administración de plantillas de lanzamiento con AWS Command Line Interface ()AWS CLI.

  2. Para ver la política de instancias mixtas existente para su grupo de Auto Scaling, ejecute el describe-auto-scaling-groupscomando. 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-asg.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    Si 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, ... } ] }
  3. Usa el start-instance-refreshcomando para iniciar el flujo de trabajo de reemplazo de instancias y aplica tu nueva plantilla de lanzamiento con el ID lt-04d5cc9b88example. Como la plantilla de lanzamiento es nueva, solo tiene una versión. Esto significa que la versión 1 de 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ón 1 de 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.json

    Contenido 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
  1. Para ver la política de instancias mixtas existente para su grupo de Auto Scaling, ejecute el describe-auto-scaling-groupscomando. 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-asg.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    Si 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, ... } ] }
  2. Utilice el start-instance-refreshcomando 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 m5a.large. 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.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    Contenido 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 } }