Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode usar um experimento de caos para verificar se seu aplicativo é resiliente a falhas, causando essas falhas em um ambiente controlado. Neste artigo, você causa 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 desta experiência pode ajudá-lo a defender-se 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 de serviço. Uma falha direta de serviço é executada diretamente num recurso da Azure sem qualquer necessidade de instrumentação, ao contrário das falhas baseadas em agente, que exigem a instalação do agente de caos.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
- Uma conta do Azure Cosmos DB. Se você não tiver uma conta do Azure Cosmos DB, poderá criar uma.
- Configure pelo menos uma região de leitura e uma região de escrita para a sua conta do Azure Cosmos DB.
Abrir o Azure Cloud Shell
O Azure Cloud Shell é um shell interativo gratuito que você pode usar para executar as etapas neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.
Para abrir o Cloud Shell, selecione Experimente 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 para Bash. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e selecione Enter para executá-lo.
Se você quiser instalar e usar a CLI localmente, este tutorial requer a CLI do Azure versão 2.0.30 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Nota
Estas instruções usam um terminal Bash no Cloud Shell. Alguns comandos podem não funcionar como descrito se você estiver executando a CLI localmente ou em um terminal do PowerShell.
Habilite o Chaos Studio em sua conta do Azure Cosmos DB
O Chaos Studio não pode injetar falhas em um recurso, a menos que esse recurso tenha sido adicionado ao Chaos Studio primeiro. Você adiciona um recurso ao Chaos Studio criando um destino e recursos no recurso. As contas do Azure Cosmos DB têm apenas um tipo de destino (service-direct) e uma capacidade (failover). Outros recursos podem ter até dois tipos de destino. Um tipo de alvo é destinado a falhas diretas relacionadas ao serviço. Outro tipo de alvo é para falhas baseadas em agentes. Outros recursos podem ter muitas outras capacidades.
Crie um destino substituindo
$RESOURCE_IDpelo ID do recurso que você está adicionando. Substitua$TARGET_TYPEpelo 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 de 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\":{}}"Crie as funcionalidades no alvo substituindo
$RESOURCE_IDpelo ID do recurso que está a adicionar. Substitui o$TARGET_TYPEpelo tipo de alvo que estás a adicionar. Substitua$CAPABILITYpelo 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 êxito sua conta do Azure Cosmos DB ao Chaos Studio.
Criar uma experimentação
Agora você pode criar seu experimento. Um experimento de caos define as ações que você deseja tomar em relação aos recursos de destino. As ações são organizadas e executadas em etapas sequenciais. O experimento do caos também define as ações que você deseja tomar contra ramificações, que são executadas em paralelo.
Formule seu experimento JSON começando com o seguinte exemplo de JSON. Modifique o JSON para corresponder ao experimento que você deseja executar usando a API Create Experiment 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" } ] } ] } }Crie o experimento usando a CLI do Azure. Substitua
$SUBSCRIPTION_ID,$RESOURCE_GROUPe$EXPERIMENT_NAMEpelas propriedades do seu experimento. Certifique-se de que guardou e carregou a sua experiência JSON. Atualizeexperiment.jsoncom 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.jsonCada experimento cria uma identidade gerenciada atribuída ao sistema correspondente. Observe a ID principal dessa identidade na resposta para a próxima etapa.
Dê permissão ao experimento para sua conta do Azure Cosmos DB
Quando você cria um experimento de caos, o Chaos Studio cria uma identidade gerenciada atribuída ao sistema que executa falhas contra seus recursos de destino. Essa identidade deve receber permissões apropriadas para o recurso de destino para que o experimento seja executado com êxito.
Dê ao experimento acesso aos seus recursos usando o comando a seguir. Substitua $EXPERIMENT_PRINCIPAL_ID pelo ID principal da etapa anterior. Substitua $RESOURCE_ID pelo ID do recurso de destino. Nesse caso, é a ID de 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 direcionado em seu experimento.
az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Execute a sua experiência
Agora você está pronto para executar seu experimento. Para ver o efeito, recomendamos que você abra a visão geral da 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.
Inicie o experimento usando a CLI do Azure. Substitua
$SUBSCRIPTION_ID,$RESOURCE_GROUPe$EXPERIMENT_NAMEpelas propriedades do seu 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-01A resposta inclui uma URL de status que você pode usar para consultar o status do experimento à medida que o experimento é executado.
Próximos passos
Agora que você executou um experimento direto de serviço do Azure Cosmos DB, está pronto para: