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-idsubnet-1234567890abcdef0
\ --security-group-idssg-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
Abra la consola de AWS FIS en https://console.aws.amazon.com/fis/
. -
En el panel de navegación, elija Plantillas de experimento.
-
Elija Crear plantilla de experimento.
-
En Descripción y nombre, escriba un nombre y una descripción para la plantilla.
-
En Actions (Acciones), haga lo siguiente:
-
Seleccione Agregar acción.
-
Escriba un nombre para la acción. Por ejemplo, escriba
interruptSpotInstance
. -
En Tipo de acción, elija aws:ec2:. send-spot-instance-interruptions
-
En Destino, mantenga el destino que AWS FIS crea automáticamente.
-
En Parámetros de acción, Duración antes de la interrupción, especifique 2 minutos (PT2M).
-
Seleccione Guardar.
-
-
En Targets (Destinos), haga lo siguiente:
-
Elija Editar en el destino que AWS FIS creó automáticamente en el paso anterior.
-
Sustituya el nombre por defecto por un nombre más descriptivo. Por ejemplo, escriba
oneSpotInstance
. -
Compruebe que Tipo de recurso sea aws:ec2:spot-instance.
-
En Método de destino, elija Etiquetas, filtros y parámetros de recursos.
-
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.
-
En Filtros de recursos, elija Agregar nuevo filtro e ingrese
State.Name
como ruta yrunning
como valor. -
En Modo de selección, elija Recuento. En Cantidad de recursos, escriba
1
. -
Seleccione Guardar.
-
-
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.
-
(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.
-
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
-
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.
-
Elija Start experiment (Iniciar experimento).
-
(Opcional) Para agregar una etiqueta a su experimento, elija Agregar nueva etiqueta e ingrese una clave y un valor de etiqueta.
-
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
-
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.
-
Para ver el estado del experimento, seleccione Estado en el panel Detalles. Para obtener más información, consulte Estados de experimento.
-
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:
-
La instancia de spot de destino recibe una recomendación de reequilibrio de instancias.
-
Se emite un aviso de interrupción de instancia de spot dos minutos antes de que Amazon EC2 termine o detenga su instancia.
-
Cuando pasan dos minutos, la instancia de spot se termina o detiene.
-
Una instancia de spot que detuvo AWS FIS permanece detenida hasta que la reinicie.
Para verificar que el experimento interrumpió la instancia
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, abra Spot Requests (Solicitudes de spot) e Instances (Instancia[s]) en pestañas o ventanas separadas del navegador.
-
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 ainstance-terminated-by-experiment
.stop
: el estado cambia amarked-for-stop-by-experiment
y, a continuación, ainstance-stopped-by-experiment
.
-
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 aStopping
y, a continuación, aStopped
.terminate
: el estado cambia aShutting-down
y, a continuación, aTerminated
.
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
-
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
-
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
Abra la consola de AWS FIS en https://console.aws.amazon.com/fis/
. -
En el panel de navegación, elija Plantillas de experimento.
-
Seleccione la plantilla de experimento y elija Acciones, Eliminar plantilla de experimento.
-
Cuando se le solicite confirmación, ingrese
delete
y luego, elija Eliminar plantilla de experimento.