Tutorial: Pruebe las interrupciones de una instancia puntual mediante 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: Pruebe las interrupciones de una instancia puntual mediante AWS FIS

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

Puede usar… AWS Servicio de inyección de fallos (AWS FIS) para comprobar cómo gestionan sus aplicaciones una interrupción de una instancia puntual. Utilice este tutorial para crear una plantilla de experimento que utilice AWS FISaws:ec2:send-spot-instance-interruptionsacción para interrumpir una de sus instancias puntuales.

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

Requisitos previos

Antes de poder usarlo AWS FISpara interrumpir una instancia puntual, complete los siguientes requisitos previos.

1. Cree un rol IAM

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

2. Verifica el acceso a AWS FIS

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

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. Añada una etiqueta para que AWS FISpuede identificar la instancia puntual de destino

Utilice el comando create-tags para añadir la etiqueta Name=interruptMe a su instancia puntual de destino.

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

Paso 1: Crear una plantilla de experimento

Cree la plantilla del experimento utilizando el AWS FISconsola. 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 puntual con la etiqueta, AWS FISelige una de ellas al azar.

Para crear una plantilla de experimento
  1. Abra el icono AWS FISbarra de consola 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. Para Target, mantenga el objetivo que AWS FIScrea para ti.

    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 para el objetivo que AWS FIScreado automáticamente para usted 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. Para el acceso al servicio, elija Usar un IAM rol existente y, a continuación, elija el IAM rol 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 del experimento JSON

Elija la pestaña Exportar. El siguiente es un ejemplo del procedimiento JSON creado por la 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. Abre la EC2 consola de Amazon 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 finalizar la instancia mediante el 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 mediante el AWS FISconsola
  1. Abra el icono AWS FISbarra de consola 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.