Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć eksperymentu chaosu, aby sprawdzić, czy aplikacja jest odporna na błędy, powodując te błędy w kontrolowanym środowisku. W tym artykule wywołasz zdarzenie wysokiego procentu obciążenia procesora na maszynie wirtualnej z systemem Linux, korzystając z eksperymentu chaosu i usługi Azure Chaos Studio. Uruchom ten eksperyment, aby pomóc w obronie aplikacji przed brakiem zasobów.
Możesz użyć tych samych kroków, aby skonfigurować i uruchomić eksperyment dla dowolnego błędu opartego na agencie. Błąd związany z działaniem agenta wymaga konfiguracji i instalacji agenta chaosu. Błąd bezpośredni usługi działa bezpośrednio w odniesieniu do zasobu platformy Azure bez konieczności instrumentacji.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Wirtualna maszyna uruchamiająca system operacyjny na liście zgodności wersji. Jeśli nie masz maszyny wirtualnej, możesz je utworzyć.
- Konfiguracja sieci, która zezwala na połączenie SSH z maszyną wirtualną.
- Tożsamość zarządzana przypisana przez użytkownika. Jeśli nie masz tożsamości zarządzanej przypisanej przez użytkownika, możesz je utworzyć.
Otwórz usługę Azure Cloud Shell
Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której można użyć do wykonania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.
Aby otworzyć usługę Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. Możesz również otworzyć usługę Cloud Shell na osobnej karcie przeglądarki, przechodząc do powłoki Bash. Wybierz pozycję Kopiuj , aby skopiować bloki kodu, wklej go w usłudze Cloud Shell, a następnie wybierz Enter , aby go uruchomić.
Jeśli wolisz zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten samouczek wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.30 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Uwaga
Instrukcje te używają terminala Bash w usłudze Cloud Shell. Niektóre polecenia mogą nie działać zgodnie z opisem, jeśli interfejs wiersza polecenia jest uruchamiany lokalnie lub w terminalu programu PowerShell.
Przypisywanie tożsamości zarządzanej do maszyny wirtualnej
Przed skonfigurowaniem programu Chaos Studio na maszynie wirtualnej przypisz tożsamość zarządzaną przypisaną przez użytkownika do każdej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych, w którym planujesz zainstalować agenta. Użyj polecenia az vm identity assign lub az vmss identity assign. Zastąp $VM_RESOURCE_ID/$VMSS_RESOURCE_ID element identyfikatorem zasobu maszyny wirtualnej, którą dodajesz jako element docelowy chaosu. Zastąp $MANAGED_IDENTITY_RESOURCE_ID identyfikatorem zasobu zarządzanej tożsamości przypisanej przez użytkownika.
Maszyna wirtualna
az vm identity assign --ids $VM_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID
Zestaw skalowania maszyn wirtualnych
az vmss identity assign --ids $VMSS_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID
Włączanie programu Chaos Studio na maszynie wirtualnej
Program Chaos Studio nie może wprowadzić błędów do maszyny wirtualnej, chyba że ta została najpierw dodana do Chaos Studio. Aby dodać maszynę wirtualną do Chaos Studio, utwórz cel i możliwości w zasobie. Następnie instalujesz agenta chaosu.
Maszyny wirtualne mają dwa typy docelowe. Jeden typ docelowy umożliwia bezpośrednie błędy serwisowe (gdzie nie jest wymagany agent). Drugi typ docelowy umożliwia błędy oparte na agencie (co wymaga instalacji agenta). Agent chaosu to aplikacja zainstalowana na maszynie wirtualnej jako rozszerzenie maszyny wirtualnej. Służy do wstrzykiwania błędów w systemie operacyjnym gościa.
Włączanie celu chaosu i możliwości
Następnie skonfiguruj element docelowy programu Microsoft-Agent na każdej maszynie wirtualnej lub zestawie skalowania maszyn wirtualnych, który określa tożsamość zarządzaną przypisaną przez użytkownika, której agent używa do nawiązywania połączenia z programem Chaos Studio. W tym przykładzie używamy jednej tożsamości zarządzanej dla wszystkich maszyn wirtualnych. Element docelowy musi zostać utworzony za pośrednictwem interfejsu API REST. W tym przykładzie używamy polecenia CLI do wykonywania wywołań REST API az rest.
Zmodyfikuj następujący kod JSON, zastępując
$USER_IDENTITY_CLIENT_IDidentyfikatorem klienta zarządzanej tożsamości. Identyfikator klienta można znaleźć w podglądzie tożsamości zarządzanej przypisanej użytkownikowi, którą utworzyłeś, w portalu Azure. Zastąp$USER_IDENTITY_TENANT_IDidentyfikatorem dzierżawy platformy Azure. Możesz go znaleźć w portalu Azure w obszarze Microsoft Entra ID w Informacje o dzierżawie. Zapisz kod JSON jako plik w tej samej lokalizacji, w której używasz interfejsu wiersza polecenia platformy Azure. W usłudze Cloud Shell możesz przeciągać i upuszczać plik JSON, aby go załadować.{ "properties": { "identities": [ { "clientId": "$USER_IDENTITY_CLIENT_ID", "tenantId": "$USER_IDENTITY_TENANT_ID", "type": "AzureManagedIdentity" } ] } }Utwórz docelową konfigurację, zastępując
$RESOURCE_IDidentyfikatorem zasobu maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych. Zastąptarget.jsonnazwą pliku JSON utworzonego w poprzednim 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 tsvJeśli wystąpi błąd analizowania programu PowerShell, przełącz się na terminal Bash zgodnie z zaleceniami dla tego samouczka lub umieść przywoływany plik JSON w pojedynczych cudzysłowach (
--body '@target.json').Skopiuj identyfikator GUID agentProfileId zwrócony przez to polecenie do użycia w późniejszym kroku.
Utwórz funkcje, zastępując element
$RESOURCE_IDidentyfikatorem zasobu docelowej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych. Zastąp$CAPABILITYnazwą funkcji błędów, którą włączasz, na przykład .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\":{}}"Jeśli na przykład włączasz możliwość wykorzystania procesora CPU:
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\":{}}"
Instalowanie rozszerzenia maszyny wirtualnej programu Chaos Studio
Agent chaosu to aplikacja uruchamiana na maszynie wirtualnej lub w wystąpieniach zestawu skalowania maszyn wirtualnych w celu wykonywania błędów opartych na agencie. Podczas instalacji konfigurujesz:
- Agent z tożsamością zarządzaną, która powinna być używana przez agenta do uwierzytelniania w programie Chaos Studio.
- Identyfikator profilu dla docelowego obiektu Microsoft-Agent, który utworzyłeś.
- Opcjonalnie klucz instrumentacji usługi Application Insights, który umożliwia agentowi wysyłanie zdarzeń diagnostycznych do usługi Application Insights.
Przed rozpoczęciem upewnij się, że masz następujące szczegóły:
-
agentProfileId: właściwość zwrócona podczas tworzenia obiektu docelowego. Jeśli nie masz tej właściwości, możesz uruchomić
az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01i skopiowaćagentProfileIdwłaściwość. -
ClientId: identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika używany w obiekcie docelowym. Jeśli nie masz tej właściwości, możesz uruchomić
az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01i skopiowaćclientIdwłaściwość. - (Opcjonalnie) AppInsightsKey: klucz instrumentacji składnika usługi Application Insights, który można znaleźć na stronie usługi Application Insights w portalu w obszarze Podstawy.
-
agentProfileId: właściwość zwrócona podczas tworzenia obiektu docelowego. Jeśli nie masz tej właściwości, możesz uruchomić
Zainstaluj rozszerzenie maszyny wirtualnej programu Chaos Studio. Zastąp
$VM_RESOURCE_IDidentyfikatorem zasobu swojej maszyny wirtualnej lub zastąp$SUBSCRIPTION_ID,$RESOURCE_GROUPi$VMSS_NAMEodpowiadającymi właściwościami dla zestawu skalowania maszyn wirtualnych. Zastąp$AGENT_PROFILE_IDelement identyfikatorem profilu agenta. Zastąp znacznik$USER_IDENTITY_CLIENT_IDidentyfikatorem klienta tożsamości zarządzanej. Zastąp element$APP_INSIGHTS_KEYkluczem instrumentacji dla usługi Application Insights. Jeśli nie używasz usługi Application Insights, usuń parę klucz/wartość.Pełna lista domyślnej konfiguracji rozszerzenia maszyny wirtualnej agenta
Poniżej przedstawiono minimalną konfigurację rozszerzenia agenta dla maszyny wirtualnej, której wymaga użytkownik:
{ "profile": "$AGENT_PROFILE_ID", "auth.msi.clientid": "$USER_IDENTITY_CLIENT_ID" }Poniżej przedstawiono wszystkie wartości konfiguracji rozszerzenia maszyny wirtualnej 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. } }Instalowanie agenta na maszynie wirtualnej
Windows
az vm extension set --ids $VM_RESOURCE_ID --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.1 --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}}'Instalowanie agenta w zestawie skalowania maszyn wirtualnych
Windows
az vmss extension set --subscription $SUBSCRIPTION_ID --resource-group $RESOURCE_GROUP --vmss-name $VMSS_NAME --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.1 --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}}'Jeśli konfigurujesz zestaw skalowania maszyn wirtualnych, sprawdź, czy wystąpienia zostały uaktualnione do najnowszego modelu. W razie potrzeby uaktualnij wszystkie wystąpienia w modelu.
az vmss update-instances -g $RESOURCE_GROUP -n $VMSS_NAME --instance-ids *
Tworzenie eksperymentu
Po pomyślnym wdrożeniu maszyny wirtualnej możesz teraz utworzyć eksperyment. Eksperyment chaosu definiuje akcje, które chcesz wykonać względem zasobów docelowych. Akcje są zorganizowane i uruchamiane w krokach sekwencyjnych. Eksperyment chaosu definiuje również akcje, które mają być wykonywane względem gałęzi, które są uruchamiane równolegle.
Sformułuj kod JSON eksperymentu, zaczynając od poniższego przykładu JSON. Zmodyfikuj kod JSON, aby odpowiadał eksperymentowi, który chcesz uruchomić przy użyciu interfejsu API tworzenia eksperymentu i biblioteki błędów.
{ "identity": { "type": "SystemAssigned" }, "location": "centralus", "properties": { "selectors": [ { "id": "Selector1", "targets": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myWindowsVM/providers/Microsoft.Chaos/targets/Microsoft-Agent", "type": "ChaosTarget" }, { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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" } ] } }Jeśli działasz na zestawie skalowania maszyn wirtualnych, zmodyfikuj parametry awarii, aby uwzględnić numery wystąpień do obsłużenia:
"parameters": [ { "key": "pressureLevel", "value": "95" }, { "key": "virtualMachineScaleSetInstances", "value": "[0,1,2]" } ]Numery instancji zestawu skalowania można zidentyfikować w portalu Azure, przechodząc do zestawu skalowania maszyn wirtualnych i wybierając Wystąpienia. Nazwa wystąpienia kończy się numerem wystąpienia.
Utwórz eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp
$SUBSCRIPTION_ID,$RESOURCE_GROUPi$EXPERIMENT_NAMEwłaściwościami dla swojego eksperymentu. Upewnij się, że plik JSON eksperymentu został zapisany i przekazany. Zaktualizujexperiment.jsonplik za pomocą nazwy pliku 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.jsonKażdy eksperyment tworzy odpowiednią tożsamość zarządzaną przypisaną przez system. Zanotuj identyfikator główny dla tej tożsamości do wykorzystania w następnym kroku.
Nadaj eksperymentowi uprawnienie do maszyny wirtualnej
Podczas tworzenia eksperymentu chaosu program Chaos Studio tworzy tożsamość zarządzaną przypisaną przez system, która wykonuje błędy względem zasobów docelowych. Ta tożsamość musi mieć odpowiednie uprawnienia do zasobu docelowego, aby eksperyment został pomyślnie uruchomiony. Rola Czytelnika jest wymagana w przypadku usterek zależnych od agenta. Inne role, które nie mają uprawnień */odczyt, takich jak Współtwórca maszyn wirtualnych, nie przyznają odpowiednich uprawnień w przypadku błędów związanych z agentem.
Nadaj eksperymentowi dostęp do maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych przy użyciu następującego polecenia. Zastąp $EXPERIMENT_PRINCIPAL_ID głównym identyfikatorem z poprzedniego kroku. Zastąp $RESOURCE_ID identyfikatorem zasobu docelowej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych. Pamiętaj, aby użyć identyfikatora zasobu maszyny wirtualnej, a nie identyfikatora zasobu agenta chaosu użytego w definicji eksperymentu. Uruchom to polecenie dla każdej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych przeznaczonych w eksperymencie.
az role assignment create --role "Reader" --assignee-principal-type "ServicePrincipal" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Uruchamianie eksperymentu
Teraz możesz przystąpić do uruchamiania eksperymentu. Aby zobaczyć efekt, zalecamy otwarcie wykresu metryk usługi Azure Monitor z użyciem procesora CPU maszyny wirtualnej na osobnej karcie przeglądarki.
Rozpocznij eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp
$SUBSCRIPTION_ID,$RESOURCE_GROUPi$EXPERIMENT_NAMEwłaściwościami dla swojego eksperymentu.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-01Odpowiedź zawiera adres URL stanu, którego można użyć do wykonywania zapytań dotyczących stanu eksperymentu podczas uruchamiania eksperymentu.
Następne kroki
Teraz, po uruchomieniu eksperymentu opartego na agencie, możesz wykonać następujące czynności: