Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать эксперимент хаоса для проверки устойчивости приложения к сбоям, вызвав эти сбои в управляемой среде. В этой статье вы вызываете масштабируемое с точки зрения чтения переключение с единственной записью в Azure Cosmos DB, используя хаотический эксперимент и Azure Chaos Studio. Выполнение этого эксперимента поможет защититься от потери данных при возникновении события резервного переключения.
Эти же действия можно использовать для настройки и запуска эксперимента для любой прямой ошибки службы. Прямой сбой службы выполняется непосредственно с ресурсом Azure без необходимости инструментирования, в отличие от сбоев на основе агента, которые требуют установки агента хаоса.
Предварительные условия
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Учетная запись Azure Cosmos DB. Если у вас нет учетной записи Azure Cosmos DB, ее можно создать.
- Настройка по крайней мере одного региона чтения и одного региона записи должна быть выполнена для учетной записи Azure Cosmos DB.
Откройте Azure Cloud Shell
Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.
Чтобы открыть Cloud Shell, выберите "Попробовать" в правом верхнем углу блока кода. Вы также можете открыть Cloud Shell на отдельной вкладке браузера, перейдя в Bash. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.
Если вы хотите установить и использовать CLI локально, для этого руководства требуется Azure CLI версии 2.0.30 или более поздней. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Примечание.
Эти инструкции используют терминал Bash в Cloud Shell. Некоторые команды могут работать не так, как описано, если вы выполняете интерфейс командной строки локально или в терминале PowerShell.
Включение Chaos Studio в учетной записи Azure Cosmos DB
Chaos Studio не может вводить ошибки в ресурс, если этот ресурс не был добавлен в Chaos Studio заранее. Вы добавите ресурс в Chaos Studio, создав целевой объект и возможности ресурса. Учетные записи Azure Cosmos DB имеют только один тип назначения (service-direct) и одну функцию (автоматическое переключение). Другие ресурсы могут иметь до двух целевых типов. Один из типов назначения — для ошибок, связанных с обслуживанием. Другой тип цели — для ошибок, связанных с агентами. Другие ресурсы могут иметь множество других возможностей.
Создайте цель, заменив
$RESOURCE_ID
на идентификатор добавляемого ресурса. Замените$TARGET_TYPE
на целевой тип, который вы добавляете:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
Например, если вы добавляете виртуальную машину в качестве прямого целевого объекта службы:
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\":{}}"
Создайте возможности для целевого объекта, заменив
$RESOURCE_ID
на идентификатор добавляемого ресурса. Замените$TARGET_TYPE
на целевой тип, который вы добавляете. Заменитеименем функции неисправности, которую вы включаете . 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\":{}}"
Например, если вы включите возможность завершения работы виртуальной машины:
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\":{}}"
Теперь вы успешно добавили учетную запись Azure Cosmos DB в Chaos Studio.
Создание эксперимента
Теперь можно создать эксперимент. Эксперимент хаоса определяет действия, которые необходимо предпринять в отношении целевых ресурсов. Действия упорядочены и выполняются последовательно. Эксперимент хаоса также определяет действия, которые необходимо предпринять против ветвей, которые выполняются параллельно.
Сформулируйте JSON вашего эксперимента, начиная со следующего образца JSON. Измените JSON, чтобы соответствовать эксперименту, который требуется запустить с помощью API создания экспериментов и библиотеки ошибок.
{ "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" } ] } ] } }
Создайте эксперимент с помощью Azure CLI. Замените
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
а$EXPERIMENT_NAME
также свойствами для эксперимента. Убедитесь, что вы сохранили и отправили json эксперимента. Обновитеexperiment.json
с вашим именем 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
Каждый эксперимент создает соответствующее управляемое удостоверение, назначаемое системой. Обратите внимание на основной идентификатор для этой личности в ответе для следующего шага.
Предоставьте разрешение для проведения эксперимента в вашей учетной записи Azure Cosmos DB
При создании эксперимента хаоса Chaos Studio создает управляемое системой удостоверение, которое выполняет сбои в отношении целевых ресурсов. Это удостоверение должно быть предоставлено соответствующим разрешениям целевому ресурсу для успешного выполнения эксперимента.
Предоставьте эксперименту доступ к ресурсам с помощью следующей команды. Замените $EXPERIMENT_PRINCIPAL_ID
на идентификатор владельца из предыдущего шага. Замените $RESOURCE_ID
идентификатором целевого ресурса. В этом случае это ресурсный идентификатор экземпляра Azure Cosmos DB. Измените роль на соответствующую встроенную роль для этого типа ресурса. Выполните эту команду для каждого ресурса, целевого в эксперименте.
az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Запуск эксперимента
Теперь вы готовы к выполнению эксперимента. Чтобы увидеть эффект, рекомендуется открыть обзор учетной записи Azure Cosmos DB и перейти к реплицировать данные глобально на отдельной вкладке браузера. Периодически обновляйте во время эксперимента, чтобы отобразить переключение региона.
Запустите эксперимент с помощью Azure CLI. Замените
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
и$EXPERIMENT_NAME
свойствами вашего эксперимента.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
Ответ содержит URL-адрес состояния, который можно использовать для запроса состояния эксперимента при выполнении эксперимента.
Следующие шаги
Теперь, когда вы выполнили прямой эксперимент службы Azure Cosmos DB, вы готовы: