Sdílet prostřednictvím


Vytvoření experimentu s chaosem, který používá chybu přímou službou pomocí Azure CLI

Pomocí experimentu s chaosem můžete ověřit, že je vaše aplikace odolná vůči selháním, a to tím, že tyto chyby způsobují v řízeném prostředí. V tomto článku způsobíte převzetí služeb při selhání služby Azure Cosmos DB s více čteními s jedním zápisem pomocí experimentu s chaosem a nástrojem Azure Chaos Studio. Spuštěním tohoto experimentu můžete bránit ztrátu dat, když dojde k události převzetí služeb při selhání.

Stejný postup můžete použít k nastavení a spuštění experimentu pro jakoukoli chybu přímou službou. Na rozdíl od chyb založených na agentech, které vyžadují instalaci agenta chaosu, běží přímo proti prostředku Azure bez nutnosti instrumentace.

Požadavky

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
  • Účet služby Azure Cosmos DB. Pokud nemáte účet služby Azure Cosmos DB, můžete ho vytvořit.
  • Nastavení alespoň jedné oblasti čtení a jednoho zápisu pro váš účet služby Azure Cosmos DB.

Otevření Azure Cloud Shellu

Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít ke spuštění kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.

Pokud chcete otevřít Cloud Shell, vyberte Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete otevřít také na samostatné kartě prohlížeče tak, že přejdete na Bash. Výběrem možnosti Kopírovat zkopírujte bloky kódu, vložte ho do Cloud Shellu a stisknutím klávesy Enter ho spusťte.

Pokud chcete nainstalovat a používat rozhraní příkazového řádku místně, tento kurz vyžaduje Azure CLI verze 2.0.30 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Poznámka:

Tyto pokyny používají terminál Bash v Cloud Shellu. Některé příkazy nemusí fungovat, jak je popsáno, pokud používáte rozhraní příkazového řádku místně nebo v terminálu PowerShellu.

Povolení nástroje Chaos Studio na účtu služby Azure Cosmos DB

Chaos Studio nemůže vkládat chyby proti prostředku, pokud se tento prostředek nepřidá do Chaos Studia jako první. Prostředek přidáte do nástroje Chaos Studio vytvořením cíle a možností prostředku. Účty Služby Azure Cosmos DB mají pouze jeden cílový typ (přímý servis) a jednu schopnost (převzetí služeb při selhání). Jiné prostředky můžou mít až dva cílové typy. Jedním cílovým typem jsou chyby přímé služby. Dalším cílovým typem jsou chyby založené na agentech. Další prostředky můžou mít mnoho dalších možností.

  1. Vytvořte cíl nahrazením $RESOURCE_ID ID prostředku, který přidáváte. Nahraďte $TARGET_TYPE cílovým typem , který přidáváte:

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

    Pokud například přidáváte virtuální počítač jako cíl přímé služby:

    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. Vytvořte možnosti cíle nahrazením $RESOURCE_ID ID prostředku, který přidáváte. Nahraďte $TARGET_TYPE cílovým typem , který přidáváte. Nahraďte $CAPABILITY názvem funkce selhání, kterou povolujete.

    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\":{}}"
    

    Pokud například povolíte funkci vypnutí virtuálního počítače:

    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\":{}}"
    

Teď jste úspěšně přidali svůj účet služby Azure Cosmos DB do nástroje Chaos Studio.

Vytvoření experimentu

Teď můžete experiment vytvořit. Experiment chaosu definuje akce, které chcete provést proti cílovým prostředkům. Akce jsou uspořádány a spouštěny v sekvenčních krocích. Experiment chaosu také definuje akce, které chcete provést proti větvím, které běží paralelně.

  1. Zformulujte json experimentu od následující ukázky JSON. Upravte json tak, aby odpovídal experimentu, který chcete spustit, pomocí rozhraní API pro vytvoření experimentu a knihovny chyb.

    {
      "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. Vytvořte experiment pomocí Azure CLI. Nahraďte $SUBSCRIPTION_IDa $RESOURCE_GROUP$EXPERIMENT_NAME vlastnosti experimentu. Ujistěte se, že jste uložili a nahráli json experimentu. Aktualizujte experiment.json název souboru 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
    

    Každý experiment vytvoří odpovídající spravovanou identitu přiřazenou systémem. Poznamenejte si ID objektu zabezpečení pro tuto identitu v odpovědi pro další krok.

Udělení oprávnění k experimentu účtu služby Azure Cosmos DB

Když vytvoříte experiment chaosu, Chaos Studio vytvoří spravovanou identitu přiřazenou systémem, která provádí chyby proti cílovým prostředkům. Tato identita musí mít příslušná oprávnění k cílovému prostředku, aby se experiment úspěšně spustil.

Pomocí následujícího příkazu dejte experimentu přístup k vašim prostředkům. Nahraďte $EXPERIMENT_PRINCIPAL_ID ID objektu zabezpečení z předchozího kroku. Nahraďte $RESOURCE_ID ID prostředku cílového prostředku. V tomto případě se jedná o ID prostředku instance služby Azure Cosmos DB. Změňte roli na odpovídající předdefinované role pro tento typ prostředku. Spusťte tento příkaz pro každý prostředek cílený v experimentu.

az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Spuštění experimentu

Teď jste připraveni spustit experiment. Pokud chcete zobrazit efekt, doporučujeme otevřít přehled účtu služby Azure Cosmos DB a přejít na globální replikaci dat na samostatné kartě prohlížeče. Během experimentu pravidelně aktualizujte, abyste zobrazili prohození oblastí.

  1. Spusťte experiment pomocí Azure CLI. Nahraďte $SUBSCRIPTION_IDa $RESOURCE_GROUP$EXPERIMENT_NAME vlastnosti experimentu.

    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. Odpověď obsahuje adresu URL stavu, kterou můžete použít k dotazování stavu experimentu při spuštění experimentu.

Další kroky

Teď, když jste spustili přímý experiment služby Azure Cosmos DB, jste připraveni: