Tworzenie eksperymentu chaosu, który używa dynamicznego określania wartości docelowej do wybierania hostów

Możesz użyć dynamicznego określania wartości docelowych w eksperymencie chaosu, aby wybrać zestaw celów do uruchomienia eksperymentu. W tym artykule pokazano, jak dynamicznie kierować zestawy skalowania maszyn wirtualnych do zamykania na podstawie strefy dostępności. Uruchomienie tego eksperymentu może pomóc w przetestowaniu trybu failover w wystąpieniu usługi Azure Virtual Machine Scale Sets w innym regionie, jeśli wystąpi awaria.

Możesz użyć tych samych kroków, aby skonfigurować i uruchomić eksperyment pod kątem dowolnego błędu obsługującego dynamiczne określanie wartości docelowej. Obecnie tylko zamykanie zestawu skalowania maszyn wirtualnych obsługuje dynamiczne określanie wartości docelowych.

Wymagania wstępne

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 klawisz Enter , aby go uruchomić.

Jeśli chcesz 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

Te instrukcje używają terminalu powłoki Bash w usłudze Cloud Shell. Niektóre polecenia mogą nie działać zgodnie z opisem, jeśli używasz interfejsu wiersza polecenia lokalnie lub w terminalu programu PowerShell.

Włączanie programu Chaos Studio w wystąpieniu usługi Virtual Machine Scale Sets

Usługa Azure Chaos Studio nie może wstrzyknąć błędów względem zasobu, chyba że ten zasób został najpierw dodany do programu Chaos Studio. Aby dodać zasób do programu Chaos Studio, utwórz element docelowy i możliwości zasobu.

Zestawy skalowania maszyn wirtualnych mają tylko jeden typ docelowy (Microsoft-VirtualMachineScaleSet) i jedną funkcję (shutdown). Inne zasoby mogą mieć maksymalnie dwa typy docelowe. Jeden typ docelowy dotyczy błędów bezpośrednich usługi. Innym typem docelowym są błędy oparte na agencie. Inne zasoby mogą również mieć wiele innych możliwości.

  1. Utwórz element docelowy dla zasobu zestawu skalowania maszyn wirtualnych. Zastąp $RESOURCE_ID element identyfikatorem zasobu dodawanego zestawu skalowania maszyn wirtualnych:

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Utwórz możliwości w docelowym zestawie skalowania maszyn wirtualnych. Zastąp $RESOURCE_ID element identyfikatorem zasobu dodawanego zasobu. Określ element docelowy VirtualMachineScaleSet i Shutdown-2.0 możliwość.

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

Zestaw skalowania maszyn wirtualnych został pomyślnie dodany do programu Chaos Studio.

Tworzenie eksperymentu

Teraz możesz 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.

  1. Sformułuj kod JSON eksperymentu, zaczynając od poniższego przykładu JSON w usłudze Virtual Machine Scale Sets Shutdown 2.0 . Zmodyfikuj kod JSON, aby odpowiadał eksperymentowi, który chcesz uruchomić przy użyciu interfejsu API tworzenia eksperymentu i biblioteki błędów. Obecnie dynamiczne określanie wartości docelowej jest dostępne tylko w przypadku błędu Zamykanie zestawów skalowania maszyn wirtualnych 2.0 i może filtrować tylko w strefach dostępności.

    • filter Użyj elementu , aby skonfigurować listę stref dostępności platformy Azure, aby filtrować elementy docelowe według. Jeśli nie podasz filterelementu , błąd zamknie wszystkie wystąpienia w zestawie skalowania maszyn wirtualnych.
    • Eksperyment jest przeznaczony dla wszystkich wystąpień usługi Virtual Machine Scale Sets w określonych strefach.
     {
        "location": "westus2",
        "identity": {
            "type": "SystemAssigned"
        },
        "properties": {
            "selectors": [
                {
                    "type": "List",
                    "id": "Selector1",
                    "targets": [
                        {
                            "id": "/subscriptions/581d4e64-0ad7-495b-bff4-347a5944a2e1/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-demo/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet",
                            "type": "ChaosTarget"
                        }
                    ],
                    "filter": {
                        "type": "Simple",
                        "parameters": {
                            "zones": [
                                "1"
                            ]
                        }
                    }
                }
            ],
            "steps": [
                {
                    "name": "Step1",
                    "branches": [
                        {
                            "name": "Branch1",
                            "actions": [
                                {
                                    "name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0",
                                    "type": "continuous",
                                    "selectorId": "Selector1",
                                    "duration": "PT2M",
                                    "parameters": [
                                        {
                                            "key": "abruptShutdown",
                                            "value": "false"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. Utwórz eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp $SUBSCRIPTION_IDwartości , $RESOURCE_GROUPi $EXPERIMENT_NAME właściwościami eksperymentu. Upewnij się, że zapisano i przekazano kod JSON eksperymentu. Zaktualizuj experiment.json plik 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.json
    

    Każdy eksperyment tworzy odpowiednią tożsamość zarządzaną przypisaną przez system. Zanotuj identyfikator podmiotu zabezpieczeń dla tej tożsamości w odpowiedzi na następny krok.

Nadaj eksperymentowi uprawnienie do zestawów skalowania maszyn wirtualnych

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.

Nadaj eksperymentowi dostęp do zasobów przy użyciu następującego polecenia. Zastąp $EXPERIMENT_PRINCIPAL_ID element identyfikatorem podmiotu zabezpieczeń z poprzedniego kroku. Zastąp $RESOURCE_ID element identyfikatorem zasobu docelowego. Zmień rolę na odpowiednią wbudowaną rolę dla tego typu zasobu. Uruchom to polecenie dla każdego zasobu docelowego w eksperymencie.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Uruchamianie eksperymentu

Teraz możesz przystąpić do uruchamiania eksperymentu. Aby zobaczyć efekt, sprawdź w portalu, czy cele zestawów skalowania maszyn wirtualnych zostały zamknięte. Jeśli zostaną one zamknięte, sprawdź, czy usługi uruchomione w zestawach skalowania maszyn wirtualnych nadal działają zgodnie z oczekiwaniami.

  1. Rozpocznij eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp $SUBSCRIPTION_IDwartości , $RESOURCE_GROUPi $EXPERIMENT_NAME właściwościami 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-01
    
  2. Odpowiedź 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 dynamicznie ukierunkowanego eksperymentu zamykania zestawu skalowania maszyn wirtualnych, możesz wykonać następujące czynności: