Vytvoření experimentu s chaosem, který používá chybu založenou na agentech s 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 vysoké % událostí využití procesoru na virtuálním počítači s Linuxem pomocí experimentu chaosu a nástroje Azure Chaos Studio. Spusťte tento experiment, který vám pomůže bránit se proti tomu, aby se aplikace stala hladovou.

Stejný postup můžete použít k nastavení a spuštění experimentu pro jakoukoli chybu založenou na agentech. Chyba založená na agentech vyžaduje nastavení a instalaci agenta chaosu. Chyba s přímým přístupem služby se spouští 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.
  • Virtuální počítač s operačním systémem v seznamu kompatibility verzí. Pokud nemáte virtuální počítač, můžete ho vytvořit.
  • Nastavení sítě, které umožňuje připojení SSH k virtuálnímu počítači.
  • Spravovaná identita přiřazená uživatelem. Pokud nemáte spravovanou identitu přiřazenou uživatelem, můžete ji vytvořit.

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 rozhraní příkazového řádku nainstalovat a používat 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 spouštíte rozhraní příkazového řádku místně nebo v terminálu PowerShellu.

Přiřazení spravované identity k virtuálnímu počítači

Před nastavením nástroje Chaos Studio na virtuálním počítači přiřaďte spravovanou identitu přiřazenou uživatelem ke každému virtuálnímu počítači nebo škálovací sadě virtuálních počítačů, ve které chcete agenta nainstalovat. az vm identity assign Použijte příkaz nebo az vmss identity assign příkaz. Nahraďte $VM_RESOURCE_ID/$VMSS_RESOURCE_ID ID prostředku virtuálního počítače, který přidáváte jako cíl chaosu. Nahraďte $MANAGED_IDENTITY_RESOURCE_ID ID prostředku spravované identity přiřazené uživatelem.

Virtuální počítač

az vm identity assign --ids $VM_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID

Škálovací sada virtuálních počítačů

az vmss identity assign --ids $VMSS_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID

Povolení Chaos Studia na virtuálním počítači

Chaos Studio nemůže vkládat chyby proti virtuálnímu počítači, pokud se tento virtuální počítač nepřidá do aplikace Chaos Studio. Pokud chcete přidat virtuální počítač do Chaos Studia, vytvořte v prostředku cíl a možnosti . Pak nainstalujete agenta chaosu.

Virtuální počítače mají dva cílové typy. Jeden cílový typ umožňuje chyby přímé služby (kde není vyžadován žádný agent). Druhý cílový typ umožňuje chyby založené na agentech (které vyžadují instalaci agenta). Agent chaosu je aplikace nainstalovaná na virtuálním počítači jako rozšíření virtuálního počítače. Použijete ho k vložení chyb do hostovaného operačního systému.

Povolení cíle a možností chaosu

Dále nastavte cíl microsoft-agenta na každém virtuálním počítači nebo škálovací sadě virtuálních počítačů, která určuje spravovanou identitu přiřazenou uživatelem, kterou agent používá pro připojení ke službě Chaos Studio. V tomto příkladu používáme jednu spravovanou identitu pro všechny virtuální počítače. Cíl musí být vytvořen prostřednictvím rozhraní REST API. V tomto příkladu použijeme příkaz rozhraní příkazového az rest řádku ke spuštění volání rozhraní REST API.

  1. Upravte následující KÓD JSON nahrazením $USER_IDENTITY_CLIENT_ID ID klienta vaší spravované identity. ID klienta najdete na webu Azure Portal s přehledem spravované identity přiřazené uživatelem, kterou jste vytvořili. Nahraďte $USER_IDENTITY_TENANT_ID ID tenanta Azure. Najdete ho na webu Azure Portal pod ID Microsoft Entra v části Informace o tenantovi. Uložte JSON jako soubor do stejného umístění, kde používáte Azure CLI. V Cloud Shellu můžete soubor JSON přetáhnout a nahrát.

    {
      "properties": {
        "identities": [
          {
            "clientId": "$USER_IDENTITY_CLIENT_ID",
            "tenantId": "$USER_IDENTITY_TENANT_ID",
            "type": "AzureManagedIdentity"
          }
        ]
      }
    }
    
  2. Vytvořte cíl nahrazením $RESOURCE_ID ID prostředku cílového virtuálního počítače nebo škálovací sady virtuálních počítačů. Nahraďte target.json názvem souboru JSON, který jste vytvořili v předchozím kroku.

    az rest --method put --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 --body @target.json --query properties.agentProfileId -o tsv
    

    Pokud se zobrazí chyba analýzy PowerShellu, přepněte do terminálu Bash podle doporučení pro účely tohoto kurzu nebo do jednoduchých uvozovek--body '@target.json' ohraničí odkazovaný soubor JSON.

  3. Zkopírujte identifikátor GUID pro agentProfileId vrácený tímto příkazem pro použití v pozdějším kroku.

  4. Vytvořte možnosti nahrazením $RESOURCE_ID ID prostředku cílového virtuálního počítače nebo škálovací sady virtuálních počítačů. Nahraďte $CAPABILITY názvem funkce selhání, kterou povolujete (napříkladCPUPressure-1.0).

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

    Pokud například povolíte funkci zatížení procesoru:

    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-Agent/capabilities/CPUPressure-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Instalace rozšíření virtuálního počítače Chaos Studio

Agent chaosu je aplikace, která běží na virtuálním počítači nebo instancích škálovací sady virtuálních počítačů, aby se spustily chyby založené na agentech. Během instalace nakonfigurujete:

  • Agent se spravovanou identitou, kterou má agent použít k ověření ve službě Chaos Studio.
  • ID profilu cíle microsoft-agenta, který jste vytvořili.
  • Volitelně můžete použít klíč instrumentace aplikace Přehledy, který agentu umožňuje odesílat diagnostické události do Přehledy aplikace.
  1. Než začnete, ujistěte se, že máte následující podrobnosti:

    • agentProfileId: Vlastnost vrácená při vytváření cíle. Pokud tuto vlastnost nemáte, můžete ji spustit az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 a zkopírovat agentProfileId .
    • ClientId: ID klienta spravované identity přiřazené uživatelem použité v cíli. Pokud tuto vlastnost nemáte, můžete ji spustit az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 a zkopírovat clientId .
    • (Volitelně) App Přehledy Key: Instrumentační klíč pro komponentu Přehledy aplikace, kterou najdete na stránce Přehledy aplikace na portálu v části Základy.
  2. Nainstalujte rozšíření virtuálního počítače Chaos Studio. Nahraďte $VM_RESOURCE_ID ID prostředku vašeho virtuálního počítače nebo nahraďte $SUBSCRIPTION_ID$RESOURCE_GROUPa $VMSS_NAME těmito vlastnostmi pro škálovací sadu virtuálních počítačů. Nahraďte $AGENT_PROFILE_ID ID profilu agenta. Nahraďte $USER_IDENTITY_CLIENT_ID ID klienta vaší spravované identity. Nahraďte $APP_INSIGHTS_KEY instrumentačním klíčem aplikace Přehledy. Pokud nepoužíváte Přehledy aplikace, odeberte tento pár klíč/hodnota.

    Úplný seznam výchozí konfigurace rozšíření virtuálního počítače agenta

    Tady je minimální konfigurace rozšíření virtuálního počítače agenta vyžadovaná uživatelem:

    {
        "profile": "$AGENT_PROFILE_ID",
        "auth.msi.clientid": "$USER_IDENTITY_CLIENT_ID"
    }
    

    Tady jsou všechny hodnoty konfigurace rozšíření virtuálního počítače agenta.

     {
        "profile": "$AGENT_PROFILE_ID",
        "auth.msi.clientid": "$USER_IDENTITY_CLIENT_ID",
        "appinsightskey": "$APP_INSIGHTS_KEY",
        "overrides": {
            "region": string, default to be null
            "logLevel": {
                "default" : string , default to be Information
                },
            "checkCertRevocation": boolean, default to be false.
        }
    }
    

    Instalace agenta na virtuální počítač

    Windows

    az vm extension set --ids $VM_RESOURCE_ID --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY"{"Overrides": "CheckCertRevocation" = true}}'
    

    Linux

    az vm extension set --ids $VM_RESOURCE_ID --name ChaosLinuxAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY"{"Overrides": "CheckCertRevocation" = true}}'
    

    Instalace agenta do škálovací sady virtuálních počítačů

    Windows

    az vmss extension set --subscription $SUBSCRIPTION_ID --resource-group $RESOURCE_GROUP --vmss-name $VMSS_NAME --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY"{"Overrides": "CheckCertRevocation" = true}}'
    

    Linux

    az vmss extension set --subscription $SUBSCRIPTION_ID --resource-group $RESOURCE_GROUP --vmss-name $VMSS_NAME --name ChaosLinuxAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY"{"Overrides": "CheckCertRevocation" = true}}'
    
  3. Pokud nastavujete škálovací sadu virtuálních počítačů, ověřte, že instance byly upgradovány na nejnovější model. V případě potřeby upgradujte všechny instance v modelu.

    az vmss update-instances -g $RESOURCE_GROUP -n $VMSS_NAME --instance-ids *
    

Vytvoření experimentu

Po úspěšném nasazení virtuálního počítače 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.

    {
      "identity": {
        "type": "SystemAssigned"
      },
      "location": "centralus",
      "properties": {
        "selectors": [
          {
            "id": "Selector1",
            "targets": [
              {
                "id": "/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myWindowsVM/providers/Microsoft.Chaos/targets/Microsoft-Agent",
                "type": "ChaosTarget"
              },
              {
                "id": "/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myLinuxVM/providers/Microsoft.Chaos/targets/Microsoft-Agent",
                "type": "ChaosTarget"
              }
            ],
            "type": "List"
          }
        ],
        "steps": [
          {
            "branches": [
              {
                "actions": [
                  {
                    "duration": "PT10M",
                    "name": "urn:csci:microsoft:agent:cpuPressure/1.0",
                    "parameters": [
                      {
                        "key": "pressureLevel",
                        "value": "95"
                      }
                    ],
                    "selectorId": "Selector1",
                    "type": "continuous"
                  }
                ],
                "name": "Branch 1"
              }
            ],
            "name": "Step 1"
          }
        ]
      }
    }
    

    Pokud používáte škálovací sadu virtuálních počítačů, upravte parametry selhání tak, aby zahrnovaly čísla instancí, která chcete cílit:

    "parameters": [
      {
        "key": "pressureLevel",
        "value": "95"
      },
      {
        "key": "virtualMachineScaleSetInstances",
        "value": "[0,1,2]"
      }
    ]
    

    Čísla instancí škálovací sady můžete identifikovat na webu Azure Portal tak, že přejdete do škálovací sady virtuálních počítačů a vyberete Instance. Název instance končí číslem instance.

  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 virtuálnímu počítači

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. Role Čtenář se vyžaduje pro chyby založené na agentech. Jiné role, které nemají oprávnění */Číst, jako je přispěvatel virtuálních počítačů, neudělují příslušná oprávnění pro chyby založené na agentech.

Pomocí následujícího příkazu dejte experimentu přístup k virtuálnímu počítači nebo škálovací sadě virtuálních počítačů. Nahraďte $EXPERIMENT_PRINCIPAL_ID ID objektu zabezpečení z předchozího kroku. Nahraďte $RESOURCE_ID ID prostředku cílového virtuálního počítače nebo škálovací sady virtuálních počítačů. Nezapomeňte použít ID prostředku virtuálního počítače, ne ID prostředku agenta chaosu použitého v definici experimentu. Spusťte tento příkaz pro každý virtuální počítač nebo škálovací sadu virtuálních počítačů cílenou v experimentu.

az role assignment create --role "Reader" --assignee-principal-type "ServicePrincipal" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID 

Spuštění experimentu

Teď jste připraveni spustit experiment. Pokud chcete vidět efekt, doporučujeme otevřít graf metrik Azure Monitoru s tlakem procesoru virtuálního počítače na samostatné kartě prohlížeče.

  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 experiment založený na agentech, jste připraveni: