Compartilhar via


Criar um experimento do Chaos que use uma falha direta do serviço com a CLI do Azure

Você pode usar um experimento de caos para verificar se seu aplicativo é resiliente a falhas causando-as em um ambiente controlado. Neste artigo, você causará um failover do Azure Cosmos DB de leitura múltipla e gravação única usando um experimento de caos e o Azure Chaos Studio. A execução desse experimento pode ajudá-lo a se defender contra a perda de dados quando ocorre um evento de failover.

Você pode usar essas mesmas etapas para configurar e executar um experimento para qualquer falha direta do serviço. Uma falha de direta de serviço é executada diretamente em um recurso do Azure sem a necessidade de instrumentação, diferente de uma falha baseada em agente, que requer a instalação do agente de caos.

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 conta do Azure Cosmos DB. Se você não tiver uma conta do Azure Cosmos DB, poderá criar uma.
  • Pelo menos uma configuração de região de leitura única e gravação única para sua conta do banco de dados Cosmos Azure.

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 conta do banco de dados Cosmos Azure

O Chaos Studio não pode injetar falhas em um recurso, a menos que esse recurso seja adicionado ao Chaos Studio primeiro. Você adiciona um recurso ao Chaos Studio criando um destino e funcionalidades no recurso. As contas do Azure Cosmos DB têm apenas um tipo de destino (direto do serviço) e um recurso (failover). 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 podem ter muitas outras funcionalidades.

  1. Crie um destino substituindo $RESOURCE_ID pela ID do recurso que você está adicionando. Substitua $TARGET_TYPE pelo tipo de destino que você está adicionando:

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Por exemplo, se você estiver adicionando uma máquina virtual como um destino direto do serviço:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Crie os recursos no destino, substituindo $RESOURCE_ID pela ID do recurso que você está adicionando. Substitua $TARGET_TYPE pelo tipo de destino que você está adicionando. Substitua $CAPABILITY pelo nome do recurso de falha que você está habilitando.

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE/capabilities/$CAPABILITY?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Por exemplo, se você estiver habilitando o recurso de desligamento da máquina virtual:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Agora você adicionou com sucesso sua conta do Azure Cosmos DB 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.

  1. Formule o JSON do experimento começando com o exemplo JSON a seguir. Modifique o JSON para corresponder ao experimento que você deseja executar usando a API Criar Experimento e a biblioteca de falhas.

    {
      "location": "eastus",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "steps": [
          {
            "name": "Step1",
            "branches": [
              {
                "name": "Branch1",
                "actions": [
                  {
                    "type": "continuous",
                    "selectorId": "Selector1",
                    "duration": "PT10M",
                    "parameters": [
                      {
                        "key": "readRegion",
                        "value": "East US 2"
                      }
                    ],
                    "name": "urn:csci:microsoft:cosmosDB:failover/1.0"
                  }
                ]
              }
            ]
          }
        ],
        "selectors": [
          {
            "id": "Selector1",
            "type": "List",
            "targets": [
              {
                "type": "ChaosTarget",
                "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  2. 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. Atualize experiment.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.

Conceder permissão de experimento à sua conta do Azure Cosmos DB

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. Nesse caso, é a ID do recurso da instância do Azure Cosmos DB. 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 "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Executar o experimento

Agora você está pronto para executar seu experimento. Para ver o efeito, recomendamos que você abra a visão geral da sua conta do Azure Cosmos DB e vá para Replicar dados globalmente em uma guia separada do navegador. Atualize periodicamente durante o experimento para mostrar a troca de região.

  1. 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
    
  2. 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ê já executou um experimento direto do serviço do Azure Cosmos DB, está pronto para: