Поделиться через


Создание эксперимента хаоса, использующего динамическую целевую ориентацию для выбора узлов

Динамический целевой объект можно использовать в эксперименте хаоса, чтобы выбрать набор целевых объектов для выполнения эксперимента. В этой статье показано, как динамически целевые масштабируемые наборы виртуальных машин завершить работу на основе зоны доступности. Выполнение этого эксперимента поможет протестировать отработку отказа в экземпляр 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). Другие ресурсы могут иметь до двух целевых типов. Один из целевых типов — для ошибок с прямой службой. Другой целевой тип — для сбоев на основе агента. Другие ресурсы также могут иметь множество других возможностей.

  1. Создайте целевой объект для ресурса масштабируемого набора виртуальных машин. Замените $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\":{}}"
    
  2. Создайте возможности целевого объекта масштабируемого набора виртуальных машин. Замените $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.

Создание эксперимента

Теперь можно создать эксперимент. Эксперимент хаоса определяет действия, которые необходимо предпринять для целевых ресурсов. Действия упорядочены и выполняются последовательно. Эксперимент хаоса также определяет действия, которые необходимо предпринять против ветвей, которые выполняются параллельно.

  1. Сформулируйте 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/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. Создайте эксперимент с помощью 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

Запуск эксперимента

Теперь вы готовы к выполнению эксперимента. Чтобы увидеть эффект, проверка портале, чтобы узнать, завершаются ли целевые объекты масштабируемых наборов виртуальных машин. Если они завершаются, проверка, чтобы убедиться, что службы, работающие на масштабируемых наборах виртуальных машин, по-прежнему выполняются должным образом.

  1. Запустите эксперимент с помощью 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
    
  2. Ответ содержит URL-адрес состояния, который можно использовать для запроса состояния эксперимента при выполнении эксперимента.

Следующие шаги

Теперь, когда вы выполнили динамически целевой эксперимент завершения масштабируемого набора виртуальных машин, вы готовы: