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
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
- Operációs rendszert futtató virtuális gép a verziókompatibilitási listában. Ha nincs virtuális gépe, létrehozhat egyet.
- Hálózati beállítás, amely lehetővé teszi, hogy SSH-t használjon a virtuális gépre.
- Felhasználó által hozzárendelt felügyelt identitás. Ha nem rendelkezik felhasználó által hozzárendelt felügyelt identitással, létrehozhat egyet.
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.
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" } ] } }
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 letarget.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'
).Másolja le a parancs által visszaadott agentProfileId GUID azonosítóját egy későbbi lépésben való használatra.
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.
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ágotagentProfileId
. - 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ágotclientId
. - (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.
- agentProfileId: A cél létrehozásakor visszaadott tulajdonság. Ha nem rendelkezik ezzel a tulajdonságával, futtathatja
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_ID
a$VMSS_NAME
$RESOURCE_GROUP
virtuá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}}'
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.
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.
Hozza létre a kísérletet az Azure CLI használatával. Cserélje le
$SUBSCRIPTION_ID
a ,$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ítsenexperiment.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.
Indítsa el a kísérletet az Azure CLI használatával. Cserélje le
$SUBSCRIPTION_ID
a ,$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
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: