Share via


Olyan káoszkísérlet létrehozása, amely ügynökalapú hibát használ az Azure CLI-vel

Egy káoszkísérlettel ellenőrizheti, hogy az alkalmazás rugalmas-e a hibákkal szemben, ha ezeket a hibákat egy ellenőrzött környezetben okozza. Ebben a cikkben egy káoszkísérlet és az Azure Chaos Studio használatával a linuxos virtuális gépeken (VM-en) a cpu-kihasználtság magas %-át okozza. Futtassa ezt a kísérletet, hogy megvédje az alkalmazásokat az erőforrás-éhezéstől.

Ugyanezekkel a lépésekkel beállíthatja és futtathatja a kísérleteket az ügynökalapú hibák esetén. Az ügynökalapú hibákhoz a káoszügynök beállítása és telepítése szükséges. A közvetlen szolgáltatáshiba közvetlenül egy Azure-erőforráson fut, anélkül, hogy rendszerezésre van szükség.

Előfeltételek

Az Azure Cloud Shell megnyitása

Az Azure Cloud Shell egy ingyenes interaktív rendszerhéj, amellyel futtathatja a cikkben leírt lépéseket. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.

A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is megnyithatja a Bash megnyitásával. A Másolás gombra kattintva másolja a kódblokkokat, illessze be a Cloud Shellbe, és futtassa az Enter billentyűt.

Ha inkább helyileg szeretné telepíteni és használni a parancssori felületet, ehhez az oktatóanyaghoz az Azure CLI 2.0.30-s vagy újabb verziójára van szükség. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Feljegyzés

Ezek az utasítások egy Bash-terminált használnak a Cloud Shellben. Előfordulhat, hogy egyes parancsok nem működnek a leírtak szerint, ha helyileg vagy PowerShell-terminálon futtatja a parancssori felületet.

Felügyelt identitás hozzárendelése a virtuális géphez

Mielőtt beállítja a Chaos Studiót a virtuális gépen, rendeljen hozzá egy felhasználó által hozzárendelt felügyelt identitást minden olyan virtuális géphez vagy virtuálisgép-méretezési csoporthoz, ahol telepíteni szeretné az ügynököt. Használja a vagy az vmss identity assign a az vm identity assign parancsot. Cserélje le $VM_RESOURCE_ID/$VMSS_RESOURCE_ID a káoszcélként hozzáadott virtuális gép erőforrás-azonosítójára. Cserélje le $MANAGED_IDENTITY_RESOURCE_ID a felhasználó által hozzárendelt felügyelt identitás erőforrás-azonosítójára.

Virtuális gép

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

Virtuálisgép-méretezési csoport

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

A Chaos Studio engedélyezése a virtuális gépen

A Chaos Studio csak akkor tud hibákat beszúrni egy virtuális gépbe, ha először hozzáadta a virtuális gépet a Chaos Studióhoz. Ha virtuális gépet szeretne hozzáadni a Chaos Studióhoz, hozzon létre egy célt és képességeket az erőforráson. Aztán telepíted a káoszügynököt.

A virtuális gépeknek két céltípusuk van. Egy céltípus lehetővé teszi a közvetlen szolgáltatáshibákat (ahol nincs szükség ügynökre). A másik céltípus lehetővé teszi az ügynökalapú hibákat (ehhez ügynök telepítésére van szükség). A chaos agent egy olyan alkalmazás, amely virtuálisgép-bővítményként van telepítve a virtuális gépen. Ezzel a funkcióval hibákat szúrhat be a vendég operációs rendszerbe.

A káosz céljának és képességeinek engedélyezése

Ezután állítson be egy Microsoft-Agent-célt minden egyes virtuálisgép- vagy virtuálisgép-méretezési csoportban, amely megadja a felhasználó által hozzárendelt felügyelt identitást, amelyet az ügynök a Chaos Studióhoz való csatlakozáshoz használ. Ebben a példában egy felügyelt identitást használunk az összes virtuális géphez. A célokat REST API-val kell létrehozni. Ebben a példában a az rest CLI paranccsal hajtjuk végre a REST API-hívásokat.

  1. Módosítsa a következő JSON-t úgy, hogy lecseréli $USER_IDENTITY_CLIENT_ID a felügyelt identitás ügyfél-azonosítójára. Az ügyfél-azonosítót az Azure Portalon találja a létrehozott felhasználó által hozzárendelt felügyelt identitás áttekintésében. Cserélje le $USER_IDENTITY_TENANT_ID az Azure-bérlő azonosítóját. Az Azure Portalon, a Microsoft Entra ID alatt, a Bérlői adatok területen találja meg. Mentse a JSON-t fájlként ugyanazon a helyen, ahol az Azure CLI-t futtatja. A Cloud Shellben húzással feltöltheti a JSON-fájlt.

    {
      "properties": {
        "identities": [
          {
            "clientId": "$USER_IDENTITY_CLIENT_ID",
            "tenantId": "$USER_IDENTITY_TENANT_ID",
            "type": "AzureManagedIdentity"
          }
        ]
      }
    }
    
  2. A cél létrehozásához cserélje le $RESOURCE_ID a cél virtuális gép vagy virtuálisgép-méretezési csoport erőforrás-azonosítóját. Cserélje le target.json az előző lépésben létrehozott JSON-fájl nevére.

    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
    

    Ha PowerShell-elemzési hibát kap, váltson egy Bash-terminálra az oktatóanyaghoz ajánlott módon, vagy vegye körül a hivatkozott JSON-fájlt egyetlen idézőjelben (--body '@target.json').

  3. Másolja le a parancs által visszaadott agentProfileId GUID azonosítóját egy későbbi lépésben való használatra.

  4. A képességeket a cél virtuális gép vagy virtuálisgép-méretezési csoport erőforrás-azonosítójára cserélve $RESOURCE_ID hozhatja létre. Cserélje le $CAPABILITY az engedélyezve lévő hibaképesség nevére (példáulCPUPressure-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\":{}}"
    

    Ha például engedélyezi a CPU-nyomás funkciót:

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

A Chaos Studio virtuálisgép-bővítmény telepítése

A káoszügynök egy olyan alkalmazás, amely a virtuális gép vagy a virtuálisgép-méretezési csoport példányaiban fut az ügynökalapú hibák végrehajtásához. A telepítés során konfigurálja a következőt:

  • Az ügynök azzal a felügyelt identitással, amelyet az ügynöknek használnia kell a Chaos Studióban való hitelesítéshez.
  • A létrehozott Microsoft-Agent-cél profilazonosítója.
  • Opcionálisan egy alkalmazás Elemzések eszközkulcsot, amely lehetővé teszi az ügynök számára, hogy diagnosztikai eseményeket küldjön az Alkalmazás Elemzések.
  1. Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik a következő adatokkal:

    • agentProfileId: A cél létrehozásakor visszaadott tulajdonság. Ha nem rendelkezik ezzel a tulajdonságával, futtathatja az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 és másolhatja a tulajdonságot agentProfileId .
    • ClientId: A célban használt, felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítója. Ha nem rendelkezik ezzel a tulajdonságával, futtathatja az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 és másolhatja a tulajdonságot clientId .
    • (Opcionálisan) Alkalmazás Elemzések Kulcs: Az alkalmazás Elemzések összetevő eszközkulcsa, amelyet az Alapvető elemek portáljának Alkalmazás Elemzések lapján talál.
  2. Telepítse a Chaos Studio virtuálisgép-bővítményt. Cserélje le $VM_RESOURCE_ID a virtuális gép erőforrás-azonosítójára, vagy cserélje le $SUBSCRIPTION_IDa $VMSS_NAME$RESOURCE_GROUPvirtuálisgép-méretezési csoport tulajdonságait. Cserélje le $AGENT_PROFILE_ID az ügynök profilazonosítóját. Cserélje le $USER_IDENTITY_CLIENT_ID a felügyelt identitás ügyfélazonosítójára. Cserélje le $APP_INSIGHTS_KEY az alkalmazás Elemzések rendszerállapot-kulcsra. Ha nem az Alkalmazás Elemzések használja, távolítsa el a kulcs/érték párot.

    Az ügynök virtuális gép alapértelmezett bővítménykonfigurációjának teljes listája

    Íme a felhasználó által megkövetelt minimális ügynök virtuálisgép-bővítménykonfiguráció :

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

    Itt található az ügynök virtuálisgép-bővítmény konfigurációjának összes értéke

     {
        "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.
        }
    }
    

    Az ügynök telepítése virtuális gépre

    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}}'
    

    Az ügynök telepítése virtuálisgép-méretezési csoportra

    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. Ha virtuálisgép-méretezési csoportot állít be, ellenőrizze, hogy a példányok a legújabb modellre lettek-e frissítve. Szükség esetén frissítse a modell összes példányát.

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

Kísérlet létrehozása

Miután sikeresen üzembe helyezte a virtuális gépet, létrehozhatja a kísérletet. A káoszkísérlet meghatározza a célerőforrásokon végrehajtandó műveleteket. A műveletek sorrendbe vannak rendezve, és szekvenciális lépésekben futnak. A káoszkísérlet azt is meghatározza, hogy milyen műveleteket szeretne végrehajtani az ágakon, amelyek párhuzamosan futnak.

  1. A következő JSON-mintával kezdje a kísérlet JSON-jának kidolgozását. Módosítsa a JSON-t úgy, hogy megfeleljen a futtatni kívánt kísérletnek a Kísérlet létrehozása API és a hibatár használatával.

    {
      "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"
          }
        ]
      }
    }
    

    Ha virtuálisgép-méretezési csoporton fut, módosítsa a hibaparamétereket úgy, hogy az tartalmazza a célként megadott példányszámokat:

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

    A méretezési csoport példányszámait az Azure Portalon a virtuálisgép-méretezési csoportra lépve és a Példányok kiválasztásával azonosíthatja. A példány neve a példányszámban végződik.

  2. Hozza létre a kísérletet az Azure CLI használatával. Cserélje le $SUBSCRIPTION_IDa , $RESOURCE_GROUPés $EXPERIMENT_NAME a kísérlet tulajdonságaira. Győződjön meg arról, hogy mentette és feltöltötte a kísérlet JSON-ját. Frissítsen experiment.json a JSON-fájlnévvel.

    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
    

    Minden kísérlet létrehoz egy megfelelő, rendszer által hozzárendelt felügyelt identitást. Jegyezze fel az identitás egyszerű azonosítóját a következő lépés válaszában.

A kísérlet engedélyének megadása a virtuális gép számára

Káoszkísérlet létrehozásakor a Chaos Studio létrehoz egy rendszer által hozzárendelt felügyelt identitást, amely hibákat hajt végre a célerőforrásokon. Ennek az identitásnak megfelelő engedélyekkel kell rendelkeznie a célerőforráshoz a kísérlet sikeres futtatásához. Az olvasó szerepkör szükséges az ügynökalapú hibákhoz. Más szerepkörök, amelyek nem rendelkeznek */Olvasás engedéllyel, például virtuálisgép-közreműködő, nem adnak megfelelő engedélyt az ügynökalapú hibákhoz.

Adjon hozzáférést a kísérletnek a virtuális géphez vagy a virtuálisgép-méretezési csoporthoz az alábbi paranccsal. Cserélje le $EXPERIMENT_PRINCIPAL_ID az előző lépésben szereplő egyszerű azonosítóra. Cserélje le $RESOURCE_ID a cél virtuális gép vagy virtuálisgép-méretezési csoport erőforrás-azonosítójára. Ügyeljen arra, hogy a virtuális gép erőforrás-azonosítóját használja, ne pedig a kísérletdefinícióban használt káoszügynök erőforrás-azonosítóját. Futtassa ezt a parancsot a kísérletben megcélzott virtuális gépek vagy virtuálisgép-méretezési csoportok esetében.

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

A kísérlet futtatása

Most már készen áll a kísérlet futtatására. Az effektus megtekintéséhez javasoljuk, hogy nyisson meg egy Azure Monitor metrikadiagramot a virtuális gép processzorterhelésével egy külön böngészőlapon.

  1. Indítsa el a kísérletet az Azure CLI használatával. Cserélje le $SUBSCRIPTION_IDa , $RESOURCE_GROUPés $EXPERIMENT_NAME a kísérlet tulajdonságaira.

    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 válasz tartalmaz egy állapot URL-címet, amellyel lekérdezheti a kísérlet állapotát a kísérlet futtatásakor.

Következő lépések

Most, hogy futtatott egy ügynökalapú kísérletet, készen áll a következőre: