As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Teste as interrupções da instância Spot usando AWS FIS
As instâncias spot usam a EC2 capacidade disponível disponível, com um desconto de até 90% em comparação com os preços sob demanda. No entanto, a Amazon EC2 pode interromper suas Instâncias Spot quando precisar da capacidade de volta. Ao usar instâncias spot, é preciso estar preparado para possíveis interrupções. Para obter mais informações, consulte Interrupções de instâncias spot no Guia do EC2 usuário da Amazon.
Você pode usar: AWS Serviço de injeção de falhas (AWS FIS) para testar como seus aplicativos lidam com uma interrupção de Instância Spot. Use este tutorial para criar um modelo de experimento que usa o AWS FISaws:ec2:send-spot-instance-interruptions
ação para interromper uma de suas Instâncias Spot.
Como alternativa, para iniciar o experimento usando o EC2 console da Amazon, consulte Iniciar uma interrupção de instância spot no Guia do usuário da Amazon EC2.
Pré-requisitos
Antes que você possa usar AWS FISpara interromper uma Instância Spot, preencha os seguintes pré-requisitos.
1. Crie uma IAM função
Crie uma função e anexe uma política que permita AWS FISpara realizar a aws:ec2:send-spot-instance-interruptions
ação em seu nome. Para obter mais informações, consulte Funções do IAM para experimentos do AWS FIS.
2. Verifique o acesso ao AWS FIS
Certifique-se de que você tenha acesso a AWS FIS. Para ter mais informações, consulte AWS FISexemplos de políticas.
3. (Opcional) Criar uma solicitação de instância spot
Se você quiser usar uma nova instância spot para esse experimento, use o comando run-instances para solicitar uma instância spot. O padrão é encerrar as Instâncias spot que são interrompidas. Se você definir o comportamento de interrupção como stop
, também deverá definir o tipo como persistent
. Para este tutorial, não defina o comportamento de interrupção como hibernate
, pois o processo de hibernação começa imediatamente.
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
Este é um exemplo do arquivo spot-options.json
.
{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }
A opção --query
no comando de exemplo faz com que o comando retorne somente o ID da instância spot. O seguinte é um exemplo de saída.
[ "i-0abcdef1234567890" ]
4. Adicione uma tag para que AWS FISpode identificar a Instância Spot de destino
Use o comando create-tags para adicionar a tag Name=interruptMe para sua Instância Spot de destino.
aws ec2 create-tags \ --resources
i-0abcdef1234567890
\ --tags Key=Name,Value=interruptMe
Etapa 1: criar um modelo de experimento
Crie o modelo de experimento usando o AWS FISconsole. No modelo, você especifica a ação que será executada. A ação interrompe a instância spot com a tag especificada. Se houver mais de uma instância spot com a tag, AWS FISescolhe um deles aleatoriamente.
Para criar um modelo de experimento
Abra as AWS FISconsole em https://console.aws.amazon.com/fis/
. -
No painel de navegação, selecione Modelos de experimento.
-
Escolha Criar modelo de experimento.
-
Em Descrição e nome, insira uma descrição e um nome para o modelo.
-
Em Ações, faça o seguinte:
-
Selecione Adicionar ação.
-
Insira um nome para a ação. Por exemplo, digite
interruptSpotInstance
. -
Em Tipo de ação, escolha aws:ec2:. send-spot-instance-interruptions
-
Para Target, mantenha o alvo que AWS FIScria para você.
-
Para Parâmetros de ação, Duração antes da interrupção, especifique 2 minutos (PT2M).
-
Escolha Salvar.
-
-
Em Destinos, faça o seguinte:
-
Escolha Editar para o destino que AWS FIScriado automaticamente para você na etapa anterior.
-
Substitua o nome padrão por um nome mais descritivo. Por exemplo, digite
oneSpotInstance
. -
Verifique se o Tipo de recurso é aws:ec2:spot-instance.
-
Em Método de destino, escolha Tags, filtros e parâmetros de recursos.
-
Em Tags de recursos, escolha Adicionar nova tag e insira da chave da tag e o valor da tag. Use a tag que você adicionou à instância spot para interromper, conforme descrito nos Pré-requisitos deste tutorial.
-
Em Filtros de recursos, escolha Adicionar novo filtro e insira
State.Name
como o caminho erunning
como o valor. -
Em Modo de seleção, escolha Contagem. Em Número de recursos, insira
1
. -
Escolha Salvar.
-
-
Para Acesso ao Serviço, escolha Usar uma IAM função existente e, em seguida, escolha a IAM função que você criou conforme descrito nos pré-requisitos deste tutorial. Se sua função não for exibida, verifique se ela tem a relação de confiança necessária. Para obter mais informações, consulte Funções do IAM para experimentos do AWS FIS.
-
(Opcional) Em Tags, escolha Adicionar nova tag e especifique uma chave de tag e um valor de tag. As tags que você adiciona são aplicadas ao seu modelo de experimento, não aos experimentos que são executados usando o modelo.
-
Escolha Criar modelo de experimento. Quando a confirmação for solicitada, insira
create
e escolha Criar modelo de experimento.
(Opcional) Para visualizar o modelo do experimento JSON
Escolha a guia Exportar. A seguir está um exemplo do procedimento JSON criado pelo console 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" } }
Etapa 2: iniciar o experimento
Quando terminar de criar seu modelo de experimento, você poderá usá-lo para iniciar um experimento.
Para iniciar um experimento
-
Você deve estar na página de detalhes do modelo de experimento que acabou de criar. Caso contrário, escolha Modelos de experimento e selecione o ID do modelo de experimento para abrir a página de detalhes.
-
Escolha Start experiment (Iniciar experimento).
-
(Opcional) Para adicionar uma tag ao experimento, escolha Adicionar nova tag e insira uma chave de tag e um valor de tag.
-
Escolha Start experiment (Iniciar experimento). Quando a confirmação for solicitada, insira
start
e escolha Iniciar experimento.
Etapa 3: acompanhar o progresso do experimento
Você pode acompanhar o progresso de um experimento em andamento até que ele seja concluído, interrompido ou falhe.
Para acompanhar o progresso de um experimento
-
Você deve estar na página de detalhes do modelo de experimento que acabou de iniciar. Caso contrário, escolha Experimentos e selecione o ID do experimento para abrir a página de detalhes.
-
Para ver o estado do experimento, marque Estado no painel Detalhes. Para obter mais informações, consulte Estados do experimento.
-
Quando o estado do experimento for Em execução, vá para a próxima etapa.
Etapa 4: verificar o resultado do experimento
Quando a ação desse experimento for concluída, ocorrerá o seguinte:
-
A instância spot de destino recebe uma recomendação de rebalanceamento da instância.
-
Um aviso de interrupção da Instância Spot é emitido dois minutos antes de a Amazon EC2 encerrar ou interromper sua instância.
-
Passados os dois minutos, a instância spot é encerrada ou interrompida.
-
Uma instância spot que foi interrompida por AWS FISpermanece parado até que você o reinicie.
Para verificar se a instância foi interrompida pelo experimento
-
Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, abra Spot Requests (Solicitações de spot) e Instances (Instâncias) em guias ou janelas separadas do navegador.
-
Em Spot Requests (Solicitações de spot), selecione a solicitação de instância spot. O status inicial é
fulfilled
. Após a conclusão do experimento, o status muda da seguinte forma:terminate
: o status se altera parainstance-terminated-by-experiment
.stop
: o status se altera paramarked-for-stop-by-experiment
e depoisinstance-stopped-by-experiment
.
-
Em Instances (Instâncias), selecione a instância spot. O status inicial é
Running
. Dois minutos depois que você recebe o aviso de interrupção da instância spot, o status se altera como se segue:stop
: o status se altera paraStopping
e depoisStopped
.terminate
: o status se altera paraShutting-down
e depoisTerminated
.
Etapa 5: limpar
Se você criou a instância spot de teste para esse experimento com um comportamento de interrupção de stop
e não precisa mais dela, é possível cancelar a solicitação da instância spot e encerrar a instância spot.
Para cancelar a solicitação e encerrar a instância usando o AWS CLI
-
Use o cancel-spot-instance-requestscomando para cancelar a solicitação da Instância Spot.
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids
sir-ksie869j
-
Use o comando terminate-instances para encerrar a instância.
aws ec2 terminate-instances --instance-ids
i-0abcdef1234567890
Se você não precisar mais do modelo de experimento, poderá excluí-lo.
Para excluir um modelo de experimento usando o AWS FISconsole
Abra as AWS FISconsole em https://console.aws.amazon.com/fis/
. -
No painel de navegação, selecione Modelos de experimento.
-
Selecione o modelo do experimento e escolha Ações, Excluir modelo de experimento.
-
Quando a confirmação for solicitada, insira
delete
e escolha Excluir modelo de experimento.