Tutorial: Prueba de las interrupciones de instancias de spot con AWS FIS. - AWS Servicio de inyección de averías

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.

Tutorial: Prueba de las interrupciones de instancias de spot con AWS FIS.

Las instancias de spot utilizan la capacidad sobrante de EC2 que está disponible, con un descuento de hasta un 90 % en comparación con los precios bajo demanda. Sin embargo, Amazon EC2 puede interrumpir sus instancias de spot cuando necesite su capacidad. Cuando utilice instancias de spot, debe estar preparado para las posibles interrupciones. Para obtener más información, consulte Interrupciones de instancias de spot en la Guía del usuario de Amazon EC2.

Puede usar AWS Fault Injection Service (AWS FIS) para probar cómo gestionan sus aplicaciones una interrupción de instancia de spot. Utilice este tutorial para crear una plantilla de experimento que utilice la acción aws:ec2:send-spot-instance-interruptions de AWS FIS para interrumpir una instancia y, a continuación, una de sus instancias de spot.

Como alternativa, para iniciar el experimento con la consola de Amazon EC2, consulte Inicio de una interrupción de instancias de spot en la Guía del usuario de Amazon EC2.

Requisitos previos

Antes de utilizar AWS FIS para interrumpir una instancia de spot, complete los siguientes requisitos previos.

1. Crear un rol de IAM

Cree un rol y asocie una política que permita a AWS FIS realizar la acción aws:ec2:send-spot-instance-interruptions en su nombre. Para obtener más información, consulte Roles de IAM para los experimentos de AWS FIS.

2. Verificación del acceso a AWS FIS

Asegúrese de tener acceso a AWS FIS. Para obtener más información, consulte Ejemplos de política de AWS FIS.

3. (Opcional) Crear una solicitud de instancia de spot

Si desea utilizar una nueva instancia de spot en este experimento, utilice el comando run-instances para solicitar una instancia de spot. El comportamiento predeterminado es terminar las instancias de spot cuando se interrumpen. Si establece el comportamiento de interrupción en stop, también debe establecer el tipo en persistent. Para este tutorial, no defina el comportamiento de interrupción en hibernate, ya que el proceso de hibernación comenzará inmediatamente.

aws ec2 run-instances \ --image-id ami-0ab193018fEXAMPLE \ --instance-type "t2.micro" \ --count 1 \ --subnet-id subnet-1234567890abcdef0 \ --security-group-ids sg-111222333444aaab \ --instance-market-options file://spot-options.json \ --query Instances[*].InstanceId

A continuación se muestra un ejemplo del archivo spot-options.json.

{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }

La opción --query del comando de ejemplo permite que el comando devuelva solo el ID de instancia de la instancia de spot. A continuación, se muestra un ejemplo del resultado.

[ "i-0abcdef1234567890" ]
4. Agregar una etiqueta para que AWS FIS pueda identificar la instancia de spot de destino

Use el comando create-tags para agregar la etiqueta Name=interruptMe a la instancia de spot de destino.

aws ec2 create-tags \ --resources i-0abcdef1234567890 \ --tags Key=Name,Value=interruptMe

Paso 1: Crear una plantilla de experimento

Cree la plantilla de experimento con la consola AWS FIS. En la plantilla, especifique la acción que se ejecutará. La acción interrumpe la instancia de spot con la etiqueta especificada. Si hay más de una instancia de spot con la etiqueta, AWS FIS elige una de ellas al azar.

Para crear una plantilla de experimento
  1. Abra la consola de AWS FIS en https://console.aws.amazon.com/fis/.

  2. En el panel de navegación, elija Plantillas de experimento.

  3. Elija Crear plantilla de experimento.

  4. En Descripción y nombre, escriba un nombre y una descripción para la plantilla.

  5. En Actions (Acciones), haga lo siguiente:

    1. Seleccione Agregar acción.

    2. Escriba un nombre para la acción. Por ejemplo, escriba interruptSpotInstance.

    3. En Tipo de acción, elija aws:ec2:. send-spot-instance-interruptions

    4. En Destino, mantenga el destino que AWS FIS crea automáticamente.

    5. En Parámetros de acción, Duración antes de la interrupción, especifique 2 minutos (PT2M).

    6. Seleccione Guardar.

  6. En Targets (Destinos), haga lo siguiente:

    1. Elija Editar en el destino que AWS FIS creó automáticamente en el paso anterior.

    2. Sustituya el nombre por defecto por un nombre más descriptivo. Por ejemplo, escriba oneSpotInstance.

    3. Compruebe que Tipo de recurso sea aws:ec2:spot-instance.

    4. En Método de destino, elija Etiquetas, filtros y parámetros de recursos.

    5. En Etiquetas de recursos, elija Agregar nueva etiqueta e ingrese la clave y el valor de la etiqueta. Utilice la etiqueta que ha agregado a la instancia de spot que se va a interrumpir, tal y como se describe en Requisitos previos de este tutorial.

    6. En Filtros de recursos, elija Agregar nuevo filtro e ingrese State.Name como ruta y running como valor.

    7. En Modo de selección, elija Recuento. En Cantidad de recursos, escriba 1.

    8. Seleccione Guardar.

  7. En Acceso al servicio, elija Usar un rol de IAM existente y, a continuación, elija el rol de IAM que creó, tal como se describe en los requisitos previos de este tutorial. Si su rol no aparece, compruebe que tiene la relación de confianza requerida. Para obtener más información, consulte Roles de IAM para los experimentos de AWS FIS.

  8. (Opcional) En Etiquetas, elija Agregar nueva etiqueta y especifique una clave y un valor de etiqueta. Las etiquetas que agregue se aplican a la plantilla de experimento, no a los experimentos que se ejecutan con la plantilla.

  9. Elija Crear plantilla de experimento. Cuando se le solicite confirmación, ingrese create y luego, elija Creación de la plantilla de experimento.

(Opcional) Para ver la plantilla de experimento JSON

Elija la pestaña Exportar. A continuación, verá un ejemplo del JSON creado por el procedimiento de consola anterior.

{ "description": "Test Spot Instance interruptions", "targets": { "oneSpotInstance": { "resourceType": "aws:ec2:spot-instance", "resourceTags": { "Name": "interruptMe" }, "filters": [ { "path": "State.Name", "values": [ "running" ] } ], "selectionMode": "COUNT(1)" } }, "actions": { "interruptSpotInstance": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "oneSpotInstance" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::123456789012:role/AllowFISSpotInterruptionActions", "tags": { "Name": "my-template" } }

Paso 2: Iniciar el experimento

Cuando haya terminado de crear la plantilla de experimento, podrá utilizarla para iniciar un experimento.

Para iniciar un experimento
  1. Debería estar en la página de detalles de la plantilla de experimento que acaba de crear. De lo contrario, elija Plantillas de experimento y, a continuación, seleccione el ID de la plantilla de experimento para abrir la página de detalles.

  2. Elija Start experiment (Iniciar experimento).

  3. (Opcional) Para agregar una etiqueta a su experimento, elija Agregar nueva etiqueta e ingrese una clave y un valor de etiqueta.

  4. Elija Start experiment (Iniciar experimento). Cuando se le pida que confirme, ingrese start y elija Iniciar experimento.

Paso 3: Hacer un seguimiento del progreso del experimento

Puede hacer un seguimiento del progreso de un experimento en ejecución hasta que se complete, se detenga o falle.

Para hacer un seguimiento del progreso de un experimento
  1. Debería estar en la página de detalles del experimento que acaba de iniciar. De lo contrario, elija Experimentos y, a continuación, seleccione el ID del experimento para abrir la página de detalles.

  2. Para ver el estado del experimento, seleccione Estado en el panel Detalles. Para obtener más información, consulte Estados de experimento.

  3. Vaya al siguiente paso cuando el estado del experimento sea En ejecución.

Paso 4: Verificar el resultado del experimento

Cuando la acción de este experimento se complete, ocurre lo siguiente:

Para verificar que el experimento interrumpió la instancia
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, abra Spot Requests (Solicitudes de spot) e Instances (Instancia[s]) en pestañas o ventanas separadas del navegador.

  3. En Spot Requests (Solicitudes de spot), seleccione la solicitud de instancia de spot. El estado inicial es.fulfilled Una vez completado el experimento, el estado cambia de la siguiente manera:

    • terminate: el estado cambia a instance-terminated-by-experiment.

    • stop: el estado cambia a marked-for-stop-by-experiment y, a continuación, a instance-stopped-by-experiment.

  4. En Instances (Instancia[s]), seleccione la instancia de spot. El estado inicial es.Running Dos minutos después de recibir el aviso de interrupción de la instancia de spot, el estado cambia de la siguiente forma:

    • stop: el estado cambia a Stopping y, a continuación, a Stopped.

    • terminate: el estado cambia a Shutting-down y, a continuación, a Terminated.

Paso 5: Eliminar

Si creó la instancia de spot de prueba para este experimento con un comportamiento de interrupción de stop y ya no la necesita, puede cancelar la solicitud de instancia de spot y terminarla.

Para cancelar la solicitud y terminar la instancia con la AWS CLI
  1. Utilice el cancel-spot-instance-requestscomando para cancelar la solicitud de instancia puntual.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j
  2. Utilice el comando terminate-instances para terminar la instancia.

    aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

Si ya no necesita la plantilla de experimento, puede eliminarla.

Para eliminar una plantilla de experimento con la consola de AWS FIS
  1. Abra la consola de AWS FIS en https://console.aws.amazon.com/fis/.

  2. En el panel de navegación, elija Plantillas de experimento.

  3. Seleccione la plantilla de experimento y elija Acciones, Eliminar plantilla de experimento.

  4. Cuando se le solicite confirmación, ingrese delete y luego, elija Eliminar plantilla de experimento.