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
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
- Konto usługi Azure Cosmos DB. Jeśli nie masz konta usługi Azure Cosmos DB, możesz je utworzyć.
- Co najmniej jeden odczyt i jeden region zapisu dla konta usługi Azure Cosmos DB.
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.
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\":{}}"
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.
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" } ] } ] } }
Utwórz eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp
$SUBSCRIPTION_ID
wartości ,$RESOURCE_GROUP
i$EXPERIMENT_NAME
właściwościami eksperymentu. Upewnij się, że plik JSON eksperymentu został zapisany i przekazany. Zaktualizujexperiment.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.
Rozpocznij eksperyment przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp
$SUBSCRIPTION_ID
wartości ,$RESOURCE_GROUP
i$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
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: