Защита экземпляров для экземпляров масштабируемого набора виртуальных машин Azure

Примечание.

Мы рекомендуем использовать гибкую оркестрацию для новых рабочих нагрузок. Дополнительные сведения см. в режимах Orchesration для Масштабируемые наборы виртуальных машин в Azure.

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

Так как приложение обрабатывает трафик, возможны ситуации, когда требуется, чтобы определенные экземпляры обрабатывались не так, как остальная часть экземпляра масштабируемого набора. Например, некоторые экземпляры в масштабируемом наборе могут выполнять длительные операции, и вы не хотите, чтобы эти экземпляры масштабировались до завершения операций. Кроме того, несколько экземпляров в масштабируемом наборе может быть отведено для выполнения дополнительных или других задач. Эти "специальные" виртуальные машины нельзя изменять с помощью других экземпляров в масштабируемом наборе. Защита экземпляра предоставляет дополнительные меры контроля для применения этих и других сценариев в приложении.

В этой статье описывается, как применять различные возможности защиты для экземпляров масштабируемых наборов.

Типы защиты экземпляров

Масштабируемые наборы предоставляют два типа возможностей защиты экземпляров:

  • Защита от уменьшения горизонтального масштаба

    • Включается с помощью свойства protectFromScaleIn в экземпляре масштабируемого набора
    • Защищает экземпляр от уменьшения горизонтального масштаба, запущенного автомасштабированием
    • Операции с экземплярами, инициированные пользователем (включая удаление экземпляра), не блокируются
    • Операции, инициированные в масштабируемом наборе (обновление, повторное создание образа, освобождение и т. д.), не блокируются
  • Защита от действий масштабируемого набора

    • Включается с помощью свойства protectFromScaleSetActions в экземпляре масштабируемого набора
    • Защищает экземпляр от уменьшения горизонтального масштаба, запущенного автомасштабированием
    • Защищает экземпляр от операций, инициированных в масштабируемом наборе (обновление, повторное создание образа, освобождение и т. д.).
    • Операции с экземплярами, инициированные пользователем (включая удаление экземпляра), не блокируются
    • Удаление всего масштабируемого набора не блокируется

Защита от уменьшения горизонтального масштаба

Защиту экземпляра можно применить к экземплярам масштабируемого набора после их создания. Защита применяется и изменяется только в модели экземпляра, а не в модели масштабируемого набора.

Существует несколько способов применения защиты от уменьшения горизонтального масштаба к экземплярам масштабируемого набора, как описано в примерах ниже.

Портал Azure

Вы можете применить защиту от уменьшения горизонтального масштаба к экземпляру в масштабируемом наборе с помощью портала Azure. Нельзя изменять более одного экземпляра одновременно. Повторите эти шаги для каждого экземпляра, который нужно защитить.

  1. Перейдите в существующий масштабируемый набор виртуальных машин.
  2. Выберите Экземпляры в меню слева, в разделе Параметры.
  3. Выберите имя нужного экземпляра.
  4. Перейдите на вкладку Политика защиты.
  5. В колонке Политика защиты установите флажок Защита от уменьшения горизонтального масштаба.
  6. Выберите Сохранить.

REST API

В следующем примере применяется защита от уменьшения горизонтального масштаба для экземпляра в масштабируемом наборе.

PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instance-id}?api-version=2019-03-01`
{
  "properties": {
    "protectionPolicy": {
      "protectFromScaleIn": true
    }
  }        
}

Примечание.

В режиме гибкой оркестрации защита экземпляров поддерживается только в API версии 2023-09-01 и выше. Для режима универсальной оркестрации защита экземпляров доступна с API версии 2019-03-01 и выше.

Azure PowerShell

Используйте командлет Update-AzVmssVM, чтобы применить защиту от масштабирования к экземпляру масштабируемого набора.

В следующем примере применяется защита от уменьшения горизонтального масштаба для экземпляра в масштабируемом наборе с идентификатором 0.

Update-AzVmssVM `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myVMScaleSet" `
  -InstanceId 0 `
  -ProtectFromScaleIn $true

Azure CLI 2.0

Используйте командлет az vmss update, чтобы применить защиту от масштабирования к экземпляру масштабируемого набора.

В следующем примере применяется защита от уменьшения горизонтального масштаба для экземпляра в масштабируемом наборе с идентификатором 0.

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --instance-id 0 \
  --protect-from-scale-in true

Защита от действий масштабируемого набора

Защиту экземпляра можно применить к экземплярам масштабируемого набора после их создания. Защита применяется и изменяется только в модели экземпляра, а не в модели масштабируемого набора.

Защита экземпляра от действий масштабируемого набора также защищает экземпляр от масштабирования, инициированного автомасштабированием.

Существует несколько способов применения защиты от действий к экземплярам масштабируемого набора, как описано в примерах ниже.

Портал Azure

Вы можете применить защиту от действий масштабируемого набора к экземпляру в масштабируемом наборе с помощью портала Azure. Нельзя изменять более одного экземпляра одновременно. Повторите эти шаги для каждого экземпляра, который нужно защитить.

  1. Перейдите в существующий масштабируемый набор виртуальных машин.
  2. Выберите Экземпляры в меню слева, в разделе Параметры.
  3. Выберите имя нужного экземпляра.
  4. Перейдите на вкладку Политика защиты.
  5. В колонке Политика защиты установите флажок Защита от действий масштабируемого набора.
  6. Выберите Сохранить.

REST API

В следующем примере применяется защита от действий масштабируемого набора для экземпляра в масштабируемом наборе.

PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vMScaleSetName}/virtualMachines/{instance-id}?api-version=2019-03-01`
{
  "properties": {
    "protectionPolicy": {
      "protectFromScaleIn": true,
      "protectFromScaleSetActions": true
    }
  }        
}

Примечание.

Защита экземпляра поддерживается только с API версии 2019-03-01 и более поздней.
Защита экземпляра от действий масштабируемого набора также защищает экземпляр от масштабирования, инициированного автомасштабированием. Нельзя указать для параметра protectFromScaleIn значение false, если для параметра protectFromScaleSetActions задано значение true

Azure PowerShell

Используйте командлет Update-AzVmssVM, чтобы применить защиту от действий масштабируемого набора к экземпляру масштабируемого набора.

В следующем примере применяется защита от действий масштабируемого набора для экземпляра в масштабируемом наборе с идентификатором 0.

Update-AzVmssVM `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myVMScaleSet" `
  -InstanceId 0 `
  -ProtectFromScaleIn $true `
  -ProtectFromScaleSetAction $true

Azure CLI 2.0

Используйте командлет az vmss update, чтобы применить защиту от действий масштабируемого набора к экземпляру масштабируемого набора.

В следующем примере применяется защита от действий масштабируемого набора для экземпляра в масштабируемом наборе с идентификатором 0.

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --instance-id 0 \
  --protect-from-scale-in true \
  --protect-from-scale-set-actions true

Устранение неполадок

Отсутствие protectionPolicy в модели масштабируемого набора

Защита экземпляра применима только к экземплярам масштабируемых наборов, а не к модели масштабируемого набора.

Отсутствие protectionPolicy в модели экземпляра масштабируемого набора

По умолчанию политика защиты не применяется к экземпляру при его создании.

Защиту экземпляра можно применить к экземплярам масштабируемого набора после их создания.

Не удается применить защиту экземпляра

Защита экземпляра поддерживается только с API версии 2019-03-01 и более поздней. Проверьте используемую версию API и обновите ее при необходимости. Возможно, также потребуется обновить PowerShell или CLI до последней версии.

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

Узнайте, как развернуть приложение на Масштабируемые наборы виртуальных машин.