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

Зоны доступности Azure — это изолированные от сбоя расположения в регионе Azure, обеспечивающие избыточное питание, охлаждение и сеть. Они позволяют запускать приложения с высоким уровнем доступности и отказоустойчивостью к сбоям центра обработки данных. Регионы Azure, поддерживающие Зоны доступности, имеют не менее трех отдельных зон. Каждая зона доступности состоит из одного или нескольких центров обработки данных, оснащенных независимой инфраструктурой, сетью и охлаждением. Зоны доступности подключены высокопроизводительной сетью с задержкой кругового пути менее 2 миллисекунда. Дополнительные сведения см. в статье Общие сведения о зонах доступности в Azure (предварительная версия).

Чтобы защитить Масштабируемые наборы виртуальных машин от сбоев на уровне центра обработки данных, можно создать масштабируемый набор в Зоны доступности. Чтобы использовать зоны доступности, масштабируемый набор должен быть создан в поддерживаемом регионе Azure.

Рекомендации по проектированию зон доступности

Масштабируемые наборы виртуальных машин поддерживает три зональные модели развертывания:

  • Избыточность между зонами или диапазон зоны (рекомендуется)
  • Зональный или зональный выравнивание (одна зона)
  • Региональный

Избыточность между зонами или диапазон между зонами

Избыточный по зонам или масштабируемый набор зоны распределяет экземпляры по всем выбранным зонам "zones": ["1","2","3"]. По умолчанию масштабируемый набор выполняет оптимальный подход к равномерному распространению экземпляров по выбранным зонам. Однако вы можете указать, что требуется строгая балансировка зоны, задав "zoneBalance": "true" параметр в развертывании. Каждая виртуальная машина и ее диски зональные, поэтому они закреплены в определенной зоне. Экземпляры между зонами подключены высокопроизводительной сетью с низкой задержкой. В случае проблемы с зональным сбоем или подключением подключение к экземплярам в затронутой зоне может быть скомпрометировано, а экземпляры в других зонах доступности не должны быть затронуты. Вы можете добавить емкость в масштабируемый набор во время зонального сбоя, а масштабируемый набор добавляет дополнительные экземпляры в небезопасные зоны. При восстановлении зоны может потребоваться уменьшить масштаб набора до исходной емкости. Рекомендуется настроить правила автомасштабирования на основе использования ЦП или памяти. Правила автоматического масштабирования позволят масштабируемому набору реагировать на потерю экземпляров виртуальных машин в этой зоне путем развертывания новых экземпляров в остальных рабочих зонах.

Распространение экземпляров между зонами доступности соответствует уровне обслуживания 99,99 % для экземпляров, распределенных по зонам доступности, и рекомендуется для большинства рабочих нагрузок в Azure.

Зональный или зональный выравнивание (одна зона)

Зональный или выровненный по зонам масштабируемый набор помещает экземпляры в одну зону "zones": ['1']доступности. Каждая виртуальная машина и ее диски зональные, поэтому они закреплены в определенной зоне. Эта конфигурация используется в основном при необходимости снижения задержки между экземплярами.

Региональный

Региональный масштабируемый набор виртуальных машин заключается в том, что назначение зоны не задано явным образом ("zones"=[] или "zones"=null). В этой конфигурации масштабируемый набор создает экземпляры региональных (незоны, закрепленные) и неявно помещает экземпляры в регион. Нет никаких гарантий для баланса или распределения между зонами или того, что экземпляры приземлились в одной зоне доступности. Совместное размещение дисков гарантируется для дисков ценовой категории "Ультра" и "Премиум" версии 2, а также для дисков SKU уровня "Премиум" версии 1 и не гарантируется для дисков SKU (SSD или HDD).

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

Домены сбоя и зоны доступности

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

  • Максимальное распространение (platformFaultDomainCount = 1)
  • Статическое фиксированное распространение (platformFaultDomainCount = 5)
  • Распространение в соответствии с доменами сбоя диска хранилища (platformFaultDomainCount = 2 или 3, только для региональных развертываний)

Если выбрать максимальное распространение, масштабируемый набор распределяет виртуальные машины между максимальным количеством доступных доменов сбоя в каждой зоне. Это может быть больше или меньше пяти доменов сбоя на зону. При выборе статического фиксированного распространения между 5 доменами сбоя масштабируемый набор распространяет виртуальные машины точно между 5 доменами сбоя в зоне. Если масштабируемый набор не может найти пять отдельных доменов сбоя для каждой зоны для удовлетворения запроса на выделение, запрос завершается ошибкой.

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

Примечание.

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

Группы размещения

Внимание

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

При развертывании масштабируемого набора можно развернуть с одной группой размещения для каждой зоны доступности или с несколькими зонами. Для региональных (не зональных) масштабируемых наборов выбор состоит в том, чтобы иметь одну или несколько групп размещения в регионе. Если для свойства singlePlacementGroup масштабируемого набора задано значение false, масштабируемый набор может состоять из нескольких групп размещения и содержать от 0 до 1000 виртуальных машин. Если задано значение true (по умолчанию), масштабируемый набор состоит из одной группы размещения и может содержать от 0 до 100 виртуальных машин. Для большинства рабочих нагрузок рекомендуется несколько групп размещения, что обеспечивает лучшее масштабирование. В версии API 2017-12-01 для масштабируемых наборов (однозонных и распределенных между зонами) по умолчанию используются несколько групп размещения, но для региональных (не зональных) масштабируемых наборов по умолчанию используется только одна.

Примечание.

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

Балансировка зоны

Наконец, для масштабируемых наборов, развернутых в нескольких зонах, вы также можете выбрать "оптимальный баланс зоны усилий" или "строгий баланс зоны". Масштабируемый набор считается сбалансированным, если каждая зона имеет одинаковое количество виртуальных машин +\-1, что и все остальные зоны для масштабируемого набора. Например:

  • Масштабируемый набор с 2 виртуальными машинами в зоне 1, 3 виртуальными машинами в зоне 2 и 3 виртуальными машинами в зоне 3 считается сбалансированным. Существует только одна зона с различным количеством виртуальных машин, и она только на 1 меньше, чем в других зонах.
  • Масштабируемый набор с 1 виртуальной машиной в зоне 1, 3 виртуальными машинами в зоне 2 и 3 виртуальными машинами в зоне 3 считается несбалансированным. Зона 1 имеет на 2 виртуальные машины меньшее, чем зоны 2 и 3.

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

При выборе наилучшей балансировки зон масштабируемый набор пытается выполнять горизонтальное увеличение или уменьшение масштаба виртуальных машин, поддерживая баланс. Однако если по какой-то причине баланс между зонами невозможен (например, если одна зона исчезнет, масштабируемый набор не может создать новую виртуальную машину в этой зоне), масштабируемый набор позволяет временной дисбаланс успешно масштабироваться или выходить. При последующих попытках горизонтального масштабирования масштабируемый набор добавляет виртуальные машины в зоны, которым требуется больше виртуальных машин для балансировки масштабируемого набора. Аналогичным образом при последующих попытках горизонтального уменьшения масштаба масштабируемый набор удаляет виртуальные машины из зон, где их должно быть меньше. При использовании строгой балансировки зон горизонтальное увеличение или уменьшение масштаба будет завершено с ошибкой, если оно приведет к несбалансированному состоянию.

Чтобы использовать вариант наилучшей балансировки зон, установите для параметра zoneBalance значение false. Это значение установлено по умолчанию в версии API 2017-12-01. Чтобы использовать строгую балансировку зон, установите для параметра zoneBalance значение true.

Примечание.

Свойство zoneBalance можно задать только в том случае, если свойство зон масштабируемого набора содержит несколько зон. Если зоны не указаны или указана всего одна зона, свойство ZoneBalance задавать не следует.

Создание масштабируемых наборов зон или зональных масштабируемых наборов

При развертывании масштабируемого набора виртуальных машин можно использовать одну зону доступности в регионе или несколько зон.

Вы можете создать масштабируемый набор, использующий зоны доступности, с помощью одного из следующих методов:

Использование портала Azure

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

Создание масштабируемого набора в одной зоне доступности

Масштабируемый набор и вспомогательные ресурсы, такие как подсистема балансировки нагрузки Azure и общедоступный IP-адрес, создаются в одной зоне, указанной вами.

Использование командной строки Azure CLI

Процесс создания масштабируемого набора, использующего зону доступности, описан в статье Создание масштабируемого набора виртуальных машин с помощью Azure PowerShell. Чтобы использовать зоны доступности, необходимо создать масштабируемый набор в поддерживаемом регионе Azure.

Добавьте параметр --zones в команду az vmss create и укажите, какую зону использовать (например, зону 1, 2 или 3).

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

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

Использование Azure PowerShell

Чтобы использовать зоны доступности, необходимо создать масштабируемый набор в поддерживаемом регионе Azure. Добавьте параметр в -Zoneкоманду New-AzVmssConfig и укажите, какую зону или зоны следует использовать (например, зону 1, 2 или 3).

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Использование шаблонов Azure Resource Manager

Создание масштабируемого набора, использующего зону доступности, описано в статьях о начале работы для Linux или Windows.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

Если вы создаете общедоступный IP-адрес или подсистему балансировки нагрузки, укажите "sku": {"name":"Standard"} свойство для создания ресурсов сети, избыточных между зонами. Необходимо также создать группы безопасности сети и правила, чтобы разрешить любой трафик. Дополнительные сведения см. в обзоре Azure Load Balancer уровня "Стандартный" и Load Balancer (цен. категория и Зоны доступности.

Полный пример масштабируемого набора с избыточностью между зонами и сетевых ресурсов см. в нашем примере шаблона Resource Manager.

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

Вы можете изменить масштаб, чтобы развернуть набор зон, по которым будет распространяться экземпляры виртуальных машин. Расширение позволяет использовать более высокий зональный уровень обслуживания (99,99%) и соглашение об уровне обслуживания региональной доступности (99,95%). Или разверните масштабируемый набор, чтобы воспользоваться преимуществами новых зон доступности, которые были недоступны при создании масштабируемого набора.

Внимание

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

Внимание

Эта функция предназначена для рабочих нагрузок без отслеживания состояния в Масштабируемые наборы виртуальных машин. Масштабируемые наборы с рабочими нагрузками с отслеживанием состояния или используемые с Service Fabric или Служба Azure Kubernetes не поддерживаются для зонального расширения.

Эту функцию можно использовать с API версии 2023-03-01 или более поздней.

Включение подписки для использования зонального расширения

В подписке необходимо зарегистрировать четыре флага компонентов:

az feature register --namespace Microsoft.Compute --name VmssAllowRegionalToZonalMigration
az feature register --namespace Microsoft.Compute --name VmssAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowRegionalToZonalMigration

Вы можете проверка состояние регистрации каждой функции с помощью:

az feature show --namespace Microsoft.Compute --name \<feature-name\>

Развертывание масштабируемого набора для использования зон доступности

Масштабируемый набор можно обновить до одного или нескольких дополнительных зон доступности до количества зон доступности, поддерживаемых регионом. Для регионов, поддерживающих зоны, минимальное количество зон — 3.

Внимание

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

Развертывание в зональном масштабируемом наборе выполняется на 3 шагах:

  1. Подготовка к зональному расширению
  2. Обновление параметра зон в масштабируемом наборе
  3. Добавление новых зональных экземпляров и удаление исходных экземпляров

Подготовка к зональному расширению

Предупреждение

Эта функция позволяет добавлять зоны в масштабируемый набор. Вы не можете вернуться в региональный масштабируемый набор или удалить зоны после их добавления.

Чтобы подготовиться к зональному расширению:

  • Убедитесь, что для размера виртуальной машины в выбранном регионе достаточно квоты для обработки большего количества экземпляров.
  • Убедитесь, что размер виртуальной машины и типы дисков, которые вы используете, доступны во всех требуемых зонах. API SKU вычислительных ресурсов можно использовать для определения размеров, доступных в зонах.
  • Убедитесь, что конфигурация масштабируемого набора допустима для зональных масштабируемых наборов:
    • platformFaultDomainCount должно быть установлено значение 1 или 5. Исправлено распространение с 2 или 3 доменами сбоя не поддерживается для зональных развертываний.
    • Резервирования емкости не поддерживаются во время расширения зоны. После того как масштабируемый набор полностью зональный (не более региональных экземпляров), можно добавить группу резервирования емкости в масштабируемый набор.
    • Развертывания выделенного узла Azure не поддерживаются.

Обновление параметра зон в масштабируемом наборе

Обновите масштабируемый набор, чтобы изменить параметр зон.

  1. Перейдите в масштабируемый набор, который требуется обновить
  2. На вкладке "Свойства" целевой страницы масштабируемого набора найдите свойство зоны доступности и нажмите клавишу Edit
  3. В диалоговом окне "Изменение расположения" выберите нужные зоны
  4. Нажмите кнопку Применить.

Добавление новых зональных экземпляров и удаление исходных экземпляров

Горизонтальное масштабирование вручную и в

Обновите емкость масштабируемого набора, чтобы добавить дополнительные экземпляры. Необходимо задать новую емкость с учетом количества новых экземпляров. Например, если в масштабируемом наборе было 5 региональных экземпляров и вы хотите масштабировать, чтобы у вас было 3 экземпляра в каждой из 3 зон, необходимо задать емкость 14.

Параметр зон и емкость масштабируемого набора можно обновить в том же шаблоне ARM или вызове REST API.

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

Автоматизация с помощью последовательного обновления + MaxSurge

При последовательном обновлении + MaxSurge создаются и обновляются новые зональные экземпляры с последней моделью масштабирования в пакетах. После добавления пакета новых экземпляров в масштабируемый набор и отчет как работоспособный пакет старых экземпляров автоматически удаляются из масштабируемого набора. Обновления продолжаются до тех пор, пока все экземпляры не будут обновлены.

Внимание

Последовательное обновление с помощью MaxSurge в настоящее время находится в общедоступной предварительной версии. Он доступен только для режима единой оркестрации VMSS.

Известные проблемы и ограничения

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

  • Масштабируемые наборы, работающие под управлением Service Fabric или Служба Azure Kubernetes, не поддерживаются.

  • Невозможно удалить или заменить зоны, добавлять только зоны

  • Невозможно обновить диапазон зоны или зональный масштабируемый набор до регионального масштабируемого набора.

  • platformFaultDomainCount должно быть установлено значение 1 или 5. Исправлено распространение с 2 или 3 доменами сбоя не поддерживается для зональных развертываний.

  • Резервирования емкости не поддерживаются во время расширения зоны. После того как масштабируемый набор полностью зональный (не более региональных экземпляров), можно добавить группу резервирования емкости в масштабируемый набор.

  • Развертывания выделенного узла Azure не поддерживаются

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

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