Создание эксперимента хаоса, использующего динамическую целевую ориентацию для выбора узлов
Динамический целевой объект можно использовать в эксперименте хаоса, чтобы выбрать набор целевых объектов для выполнения эксперимента. В этой статье показано, как динамически целевые масштабируемые наборы виртуальных машин завершить работу на основе зоны доступности. Выполнение этого эксперимента поможет протестировать отработку отказа в экземпляр Azure Масштабируемые наборы виртуальных машин в другом регионе, если произошел сбой.
Эти же действия можно использовать для настройки и запуска эксперимента для любой ошибки, поддерживающей динамическое целевое назначение. В настоящее время только завершение работы масштабируемого набора виртуальных машин поддерживает динамическое назначение.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Экземпляр Azure Масштабируемые наборы виртуальных машин.
Откройте 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 Chaos Studio не может вводить ошибки к ресурсу, если только этот ресурс не был добавлен в Chaos Studio. Чтобы добавить ресурс в Chaos Studio, создайте целевой объект и возможности ресурса.
Масштабируемые наборы виртуальных машин имеет только один целевой тип (Microsoft-VirtualMachineScaleSet
) и одну возможность (shutdown
). Другие ресурсы могут иметь до двух целевых типов. Один из целевых типов — для ошибок с прямой службой. Другой целевой тип — для сбоев на основе агента. Другие ресурсы также могут иметь множество других возможностей.
Создайте целевой объект для ресурса масштабируемого набора виртуальных машин. Замените
$RESOURCE_ID
идентификатором ресурса масштабируемого набора виртуальных машин, который вы добавляете:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
Создайте возможности целевого объекта масштабируемого набора виртуальных машин. Замените
$RESOURCE_ID
идентификатором ресурса добавляемого ресурса. Укажите целевойVirtualMachineScaleSet
объект иShutdown-2.0
возможность.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\":{}}"
Теперь вы успешно добавили масштабируемый набор виртуальных машин в Chaos Studio.
Создание эксперимента
Теперь можно создать эксперимент. Эксперимент хаоса определяет действия, которые необходимо предпринять для целевых ресурсов. Действия упорядочены и выполняются последовательно. Эксперимент хаоса также определяет действия, которые необходимо предпринять против ветвей, которые выполняются параллельно.
Сформулируйте json эксперимента, начиная со следующего примера Масштабируемые наборы виртуальных машин завершение работы 2.0 JSON. Измените JSON, чтобы соответствовать эксперименту, который требуется запустить с помощью API создания экспериментов и библиотеки ошибок. В настоящее время динамическая целевая ориентация доступна только с ошибкой Масштабируемые наборы виртуальных машин завершения работы 2.0 и может фильтровать только в зонах доступности.
filter
Используйте элемент, чтобы настроить список зон доступности Azure для фильтрации целевых объектов по. Если не указатьfilter
, ошибка завершает работу всех экземпляров в масштабируемом наборе виртуальных машин.- Эксперимент предназначен для всех Масштабируемые наборы виртуальных машин экземпляров в указанных зонах.
{ "location": "westus2", "identity": { "type": "SystemAssigned" }, "properties": { "selectors": [ { "type": "List", "id": "Selector1", "targets": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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" } ] } ] } ] } ] } }
Создайте эксперимент с помощью 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
Каждый эксперимент создает соответствующее управляемое удостоверение, назначаемое системой. Обратите внимание на идентификатор субъекта для этого удостоверения в ответе на следующий шаг.
Предоставление разрешений на эксперимент для масштабируемых наборов виртуальных машин
При создании эксперимента хаоса Студия Chaos Studio создает управляемое удостоверение, назначаемое системой, которое выполняет ошибки в целевых ресурсах. Это удостоверение должно быть предоставлено соответствующим разрешениям целевому ресурсу для успешного выполнения эксперимента.
Предоставьте эксперименту доступ к ресурсам с помощью следующей команды. Замените $EXPERIMENT_PRINCIPAL_ID
идентификатор субъекта на предыдущем шаге. Замените $RESOURCE_ID
идентификатором ресурса целевого ресурса. Измените роль на соответствующую встроенную роль для этого типа ресурса. Выполните эту команду для каждого ресурса, целевого в эксперименте.
az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Запуск эксперимента
Теперь вы готовы к выполнению эксперимента. Чтобы увидеть эффект, проверьте, завершается ли целевые объекты масштабируемых наборов виртуальных машин на портале. Если они завершаются, убедитесь, что службы, работающие на масштабируемых наборах виртуальных машин, по-прежнему выполняются должным образом.
Запустите эксперимент с помощью 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-адрес состояния, который можно использовать для запроса состояния эксперимента при выполнении эксперимента.
Следующие шаги
Теперь, когда вы выполнили динамически целевой эксперимент завершения масштабируемого набора виртуальных машин, вы готовы: