Criar um experimento de caos que usa o direcionamento dinâmico para selecionar hosts
Use o direcionamento dinâmico em um experimento de caos para escolher um conjunto de destinos para executar um experimento. Neste artigo, mostramos como direcionar dinamicamente conjuntos de dimensionamento de máquinas virtuais para desligamento com base na zona de disponibilidade. Executar este experimento pode ajudar você a testar o failover para uma instância dos Conjuntos de Dimensionamento de Máquinas Virtuais do Azure em uma região diferente se houver uma interrupção.
Use essas mesmas etapas para configurar e executar um experimento para qualquer falha que dê suporte ao direcionamento dinâmico. Atualmente, apenas o desligamento do conjunto de dimensionamento de máquinas virtuais dá suporte ao direcionamento dinâmico.
Pré-requisitos
- Uma assinatura do Azure. Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
- Uma instância dos Conjuntos de Dimensionamento de Máquinas Virtuais.
Abrir o Azure Cloud Shell
O Azure Cloud Shell é um shell interativo gratuito que pode ser usado para executar as etapas neste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.
Para abrir o Cloud Shell, selecione Experimentar no canto superior direito de um bloco de código. Você também pode abrir o Cloud Shell em uma guia separada do navegador indo até Bash. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e selecione Enter para executá-lo.
Caso queira instalar e usar a CLI localmente, este tutorial exigirá a CLI do Azure versão 2.0.30 ou posterior. Execute az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Observação
Essas instruções usam um terminal Bash no Azure Cloud Shell. Alguns comandos podem não funcionar conforme descrito, caso esteja executando a CLI localmente ou em um terminal do PowerShell.
Habilitar o Chaos Studio em sua instância de Conjuntos de Dimensionamento de Máquinas Virtuais
O Azure Chaos Studio não pode injetar falhas em um recurso, a menos que esse recurso seja adicionado primeiro ao Chaos Studio. Para adicionar um recurso ao Chaos Studio, crie um destino e funcionalidades no recurso.
Os Conjuntos de Dimensionamento de Máquinas Virtuais têm apenas um tipo de destino (Microsoft-VirtualMachineScaleSet
) e uma funcionalidade (shutdown
). Outros recursos podem ter até dois tipos de destino. Um tipo de destino é para falhas diretas de serviço. Outro tipo de destino é para falhas baseadas em agente. Outros recursos também podem ter muitas outras funcionalidades.
Crie um destino para o recurso do conjunto de dimensionamento de máquinas virtuais. Substitua
$RESOURCE_ID
pela ID do recurso do conjunto de dimensionamento de máquinas virtuais que você está adicionando:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
Crie os recursos no destino do conjunto de dimensionamento de máquinas virtuais. Substitua
$RESOURCE_ID
pela ID do recurso que você está adicionando. Especifique o destinoVirtualMachineScaleSet
e a funcionalidadeShutdown-2.0
.az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet/capabilities/Shutdown-2.0?api-version=2023-11-01" --body "{\"properties\":{}}"
Agora você adicionou com êxito seu conjunto de dimensionamento de máquinas virtuais ao Chaos Studio.
Criar uma experiência
Agora você pode criar seu experimento. Um experimento de caos define as ações que você deseja executar em relação aos recursos de destino. As ações são organizadas e executadas em etapas sequenciais. O experimento de caos também define as ações que você deseja executar em relação a branches, que são executadas em paralelo.
Formular o JSON do experimento começando com a seguinte amostra de JSON de Conjuntos de Dimensionamento de Máquinas Virtuais 2.0. Modifique o JSON para corresponder ao experimento que você quer executar usando a API Criar Experimento e a biblioteca de falhas. No momento, o direcionamento dinâmico só está disponível com a falha do Desligamento 2.0 dos Conjuntos de Dimensionamento de Máquinas Virtuais e só pode filtrar em zonas de disponibilidade.
- Use o elemento
filter
para configurar a lista de zonas de disponibilidade do Azure para filtrar destinos. Caso não forneça umfilter
, a falha desligará todas as instâncias no conjunto de dimensionamento de máquinas virtuais. - O experimento tem como destino todas as instâncias dos Conjuntos de Dimensionamento de Máquinas Virtuais nas zonas especificadas.
{ "location": "westus2", "identity": { "type": "SystemAssigned" }, "properties": { "selectors": [ { "type": "List", "id": "Selector1", "targets": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-demo/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet", "type": "ChaosTarget" } ], "filter": { "type": "Simple", "parameters": { "zones": [ "1" ] } } } ], "steps": [ { "name": "Step1", "branches": [ { "name": "Branch1", "actions": [ { "name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0", "type": "continuous", "selectorId": "Selector1", "duration": "PT2M", "parameters": [ { "key": "abruptShutdown", "value": "false" } ] } ] } ] } ] } }
- Use o elemento
Crie o experimento usando a CLI do Azure. Substitua
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
e$EXPERIMENT_NAME
com as propriedades do experimento. Verifique se você salvou e carregou o JSON do experimento. Atualizeexperiment.json
com seu nome de arquivo JSON.az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
Cada experimento cria uma identidade gerenciada atribuída pelo sistema correspondente. Observe a ID da entidade de segurança dessa identidade na resposta para a próxima etapa.
Dar permissão de experimento aos conjuntos de dimensionamento de máquinas virtuais
Quando você cria um experimento de caos, o Chaos Studio cria uma identidade gerenciada atribuída pelo sistema que executa falhas nos recursos de destino. Essa identidade deve receber as permissões apropriadas para o recurso de destino para que o experimento seja executado com êxito.
Dê acesso ao experimento aos seus recursos usando o comando a seguir. Substitua $EXPERIMENT_PRINCIPAL_ID
pela ID da entidade de segurança da etapa anterior. Substitua $RESOURCE_ID
pela ID do recurso de destino. Altere a função para a função interna apropriada para esse tipo de recurso. Execute este comando para cada recurso de destino em seu experimento.
az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Executar o experimento
Agora você está pronto para executar seu experimento. Para visualizar o efeito, verifique o portal para observar se os destinos dos conjuntos de dimensionamento de máquinas virtuais estão desligados. Se eles estiverem desligados, verifique se os serviços em execução nos conjuntos de dimensionamento de máquinas virtuais ainda estão em execução conforme o esperado.
Inicie o experimento usando a CLI do Azure. Substitua
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
e$EXPERIMENT_NAME
com as propriedades do experimento.az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
A resposta inclui uma URL de status que você pode usar para consultar o status do experimento à medida que ele é executado.
Próximas etapas
Agora que você executou um experimento de desligamento de conjunto de dimensionamento de máquinas virtuais direcionado dinamicamente, você está pronto para: