Udostępnij za pośrednictwem


Tworzenie eksperymentu chaosu korzystającego z błędu bezpośredniego usługi za pomocą interfejsu wiersza polecenia platformy Azure

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 tworzysz tryb failover usługi Azure Cosmos DB z wieloma odczytami i jednym zapisem przy użyciu eksperymentu chaosu i usługi Azure Chaos Studio. Uruchomienie tego eksperymentu może pomóc w obronie przed utratą danych w przypadku wystąpienia zdarzenia trybu failover.

Możesz użyć tych samych kroków, aby skonfigurować i uruchomić eksperyment dla dowolnego błędu bezpośredniego usługi. Błąd bezpośredni dla usługi działa bezpośrednio w odniesieniu do zasobu platformy Azure bez konieczności instrumentacji, w przeciwieństwie do błędów opartych na agentach, które wymagają zainstalowania agenta chaosu.

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 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 na koncie usługi Azure Cosmos DB

Program Chaos Studio nie może wstrzyknąć błędów względem zasobu, chyba że ten zasób został najpierw dodany do programu Chaos Studio. Zasób można dodać do programu Chaos Studio, tworząc element docelowy i możliwości w zasobie. Konta usługi Azure Cosmos DB mają tylko jeden typ docelowy (usługa bezpośredni) i jedną funkcję (tryb failover). 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ą mieć wiele innych możliwości.

  1. Utwórz element docelowy, zastępując $RESOURCE_ID element identyfikatorem zasobu dodawanego zasobu. Zastąp $TARGET_TYPE ciąg typem docelowym, który dodajesz:

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

    Jeśli na przykład dodajesz maszynę wirtualną jako obiekt docelowy usługi:

    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-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Utwórz możliwości w obiekcie docelowym, zastępując $RESOURCE_ID element identyfikatorem zasobu dodawanego zasobu. Zastąp $TARGET_TYPE element typem docelowym, który dodajesz. Zastąp $CAPABILITY ciąg nazwą funkcji błędów, którą włączasz.

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

    Jeśli na przykład włączasz możliwość zamykania maszyny wirtualnej:

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

Konto usługi Azure Cosmos DB zostało pomyślnie dodane 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. Zmodyfikuj kod JSON, aby odpowiadał eksperymentowi, który chcesz uruchomić przy użyciu interfejsu API tworzenia eksperymentu i biblioteki błędów.

    {
      "location": "eastus",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "steps": [
          {
            "name": "Step1",
            "branches": [
              {
                "name": "Branch1",
                "actions": [
                  {
                    "type": "continuous",
                    "selectorId": "Selector1",
                    "duration": "PT10M",
                    "parameters": [
                      {
                        "key": "readRegion",
                        "value": "East US 2"
                      }
                    ],
                    "name": "urn:csci:microsoft:cosmosDB:failover/1.0"
                  }
                ]
              }
            ]
          }
        ],
        "selectors": [
          {
            "id": "Selector1",
            "type": "List",
            "targets": [
              {
                "type": "ChaosTarget",
                "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  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 plik JSON eksperymentu został zapisany i przekazany. 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 konta usługi Azure Cosmos DB

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. W takim przypadku jest to identyfikator zasobu wystąpienia usługi Azure Cosmos DB. 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 "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Uruchamianie eksperymentu

Teraz możesz przystąpić do uruchamiania eksperymentu. Aby zobaczyć efekt, zalecamy otwarcie przeglądu konta usługi Azure Cosmos DB i przejście do pozycji Replikowanie danych globalnie na osobnej karcie przeglądarki. Odśwież okresowo podczas eksperymentu, aby pokazać zamianę regionów.

  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 eksperymentu bezpośredniego usługi Azure Cosmos DB, możesz wykonać następujące czynności: