Создание масштабируемого набора Azure, который использует зоны доступностиCreate a virtual machine scale set that uses Availability Zones

Чтобы предотвратить сбои масштабируемых наборов виртуальных машин на уровне центра обработки данных, можно создать масштабируемые наборы в зонах доступности.To protect your virtual machine scale sets from datacenter-level failures, you can create a scale set across Availability Zones. Регионы Azure, которые поддерживают зоны доступности, имеют по крайней мере три отдельные зоны, для каждой из которых предусмотрены собственные независимые источники питания, сети и системы охлаждения.Azure regions that support Availability Zones have a minimum of three separate zones, each with their own independent power source, network, and cooling. Дополнительные сведения см. в статье Общие сведения о зонах доступности в Azure (предварительная версия).For more information, see Overview of Availability Zones.

Вопросы доступностиAvailability considerations

При попытке развертывания масштабируемого набора в одну или несколько зон, начиная с версии API 2017-12-01, вы можете выбрать развертывание с максимальным распространением или со статическим распространением между 5 доменами сбоя.When you deploy a scale set into one or more zones as of API version 2017-12-01, you have the option to deploy with "max spreading" or "static 5 fault domain spreading". Если выбрать максимальное распространение, масштабируемый набор распределяет виртуальные машины между максимальным количеством доступных доменов сбоя в каждой зоне.With max spreading, the scale set spreads your VMs across as many fault domains as possible within each zone. Это может быть больше или меньше пяти доменов сбоя на зону.This spreading could be across greater or fewer than five fault domains per zone. При выборе статического распространения между 5 доменами сбоя масштабируемый набор распространяет виртуальные машины точно между 5 доменами сбоя в зоне.With "static 5 fault domain spreading", the scale set spreads your VMs across exactly five fault domains per zone. Если масштабируемому набору не удается найти 5 отдельных доменов сбоя в каждой зоне для удовлетворения запроса на распределение, запрос завершится ошибкой.If the scale set cannot find five distinct fault domains per zone to satisfy the allocation request, the request fails.

Для большинства рабочих нагрузок рекомендуется вариант развертывания с использованием максимального распространения, так как этот подход обеспечивает лучшее распространение.We recommend deploying with max spreading for most workloads, as this approach provides the best spreading in most cases. Если необходимо, чтобы реплики распространялись между отдельными изолированными аппаратными блоками, рекомендуется распространять их между несколькими доступными зонами и использовать максимальное распространение в каждой зоне.If you need replicas to be spread across distinct hardware isolation units, we recommend spreading across Availability Zones and utilize max spreading within each zone.

При максимальном распространении в представлении экземпляра масштабируемого набора виртуальных машин и в метаданных экземпляра отображается только один домен сбоя, независимо от количества доменов сбоя, по которым распределены виртуальные машины.With max spreading, you only see one fault domain in the scale set VM instance view and in the instance metadata regardless of how many fault domains the VMs are spread across. Распределение в каждой зоне является неявным.The spreading within each zone is implicit.

Чтобы использовать максимальное распространение, установите для параметра platformFaultDomainCount значение 1.To use max spreading, set platformFaultDomainCount to 1. Чтобы использовать статическое распространение между 5 доменами сбоя, установите для параметра platformFaultDomainCount значение 5.To use static five fault domain spreading, set platformFaultDomainCount to 5. В версии API 2017-12-01 для параметра platformFaultDomainCount по умолчанию установлено значение 1 для однозонных масштабируемых наборов и тех, которые распределены между зонами.In API version 2017-12-01, platformFaultDomainCount defaults to 1 for single-zone and cross-zone scale sets. В настоящее время для региональных масштабируемых наборов (не зональные) поддерживается только статическое распределение по пяти доменам сбоя.Currently, only static five fault domain spreading is supported for regional (non-zonal) scale sets.

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

При развертывании масштабируемого набора можно выбрать развертывание с одной или несколькими группами размещения на зону доступности.When you deploy a scale set, you also have the option to deploy with a single placement group per Availability Zone, or with multiple per zone. Для региональных масштабируемых наборов (не зональные) выбор должен иметь одну группу размещения в регионе или иметь несколько в регионе.For regional (non-zonal) scale sets, the choice is to have a single placement group in the region or to have multiple in the region. Для большинства рабочих нагрузок рекомендуется несколько групп размещения, что обеспечивает лучшее масштабирование.For most workloads, we recommend multiple placement groups, which allows for greater scale. В API версии 2017-12-01масштабируемые наборы по умолчанию имеют несколько групп размещения для масштабируемых наборов с одной зоной и между зонами, но они по умолчанию используют одну группу размещения для региональных (не зональные) масштабируемых наборов.In API version 2017-12-01, scale sets default to multiple placement groups for single-zone and cross-zone scale sets, but they default to single placement group for regional (non-zonal) scale sets.

Примечание

При выборе максимального распределения необходимо использовать несколько групп размещения.If you use max spreading, you must use multiple placement groups.

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

И наконец, для масштабируемых наборов, развернутых в нескольких зонах, также можно выбрать между вариантом наилучшей балансировки зон и строгой балансировки зон.Finally, for scale sets deployed across multiple zones, you also have the option of choosing "best effort zone balance" or "strict zone balance". Масштабируемый набор считается сбалансированным, если каждая зона имеет одинаковое количество виртуальных машин или +\- 1 VM во всех остальных зонах для набора шкалы.A scale set is considered "balanced" if each zone the same number of VMs or +\- 1 VM in all other zones for the scale set. Пример:For example:

  • Масштабируемый набор с 2 виртуальными машинами в зоне 1, 3 виртуальными машинами в зоне 2 и 3 виртуальными машинами в зоне 3 считается сбалансированным.A scale set with 2 VMs in zone 1, 3 VMs in zone 2, and 3 VMs in zone 3 is considered balanced. Существует только одна зона с различным количеством виртуальных машин, и она только на 1 меньше, чем в других зонах.There is only one zone with a different VM count and it is only 1 less than the other zones.
  • Масштабируемый набор с 1 виртуальной машиной в зоне 1, 3 виртуальными машинами в зоне 2 и 3 виртуальными машинами в зоне 3 считается несбалансированным.A scale set with 1 VM in zone 1, 3 VMs in zone 2, and 3 VMs in zone 3 is considered unbalanced. Зона 1 имеет на 2 виртуальные машины меньшее, чем зоны 2 и 3.Zone 1 has 2 fewer VMs than zones 2 and 3.

Виртуальные машины в масштабируемом наборе могут быть успешно созданы, но развертывание расширения на этих виртуальных машинах завершится сбоем.It's possible that VMs in the scale set are successfully created, but extensions on those VMs fail to deploy. Эти виртуальные машины с ошибкой расширения все еще будут учитываться в процессе определения того, является ли масштабируемый набор сбалансированным.These VMs with extension failures are still counted when determining if a scale set is balanced. Например, масштабируемый набор с 3 виртуальными машинами в зоне 1, 3 виртуальными машинами в зоне 2 и 3 виртуальными машинами в зоне 3 считается сбалансированным, даже если все расширения завершились ошибкой в зоне 1, а все расширения в зонах 2 и 3 были успешными.For instance, a scale set with 3 VMs in zone 1, 3 VMs in zone 2, and 3 VMs in zone 3 is considered balanced even if all extensions failed in zone 1 and all extensions succeeded in zones 2 and 3.

При выборе наилучшей балансировки зон масштабируемый набор пытается выполнять свертывание и развертывание виртуальных машин, поддерживая баланс.With best-effort zone balance, the scale set attempts to scale in and out while maintaining balance. Однако, если по некоторым причинам это сделать невозможно (например, если одна зона выйдет из строя, масштабируемый набор не сможет создать в ней виртуальную машину), для успешного масштабирования масштабируемый набор позволяет временный дисбаланс зон. При последующих попытках горизонтального масштабирования масштабируемый набор добавляет виртуальные машины в зоны, которым они необходимы, чтобы он снова стал сбалансированным.However, if for some reason this is not possible (for example, if one zone goes down, the scale set cannot create a new VM in that zone), the scale set allows temporary imbalance to successfully scale in or out. On subsequent scale-out attempts, the scale set adds VMs to zones that need more VMs for the scale set to be balanced. Аналогичным образом при последующих попытках масштабирования масштабируемый набор удаляет виртуальные машины из зон, где их должно быть меньше.Similarly, on subsequent scale in attempts, the scale set removes VMs from zones that need fewer VMs for the scale set to be balanced. При использовании строгой балансировки зон масштабирование будет завершено ошибкой, если оно приведет к несбалансированному состоянию.With "strict zone balance", the scale set fails any attempts to scale in or out if doing so would cause unbalance.

Чтобы использовать вариант наилучшей балансировки зон, установите для параметра zoneBalance значение false.To use best-effort zone balance, set zoneBalance to false. Это значение установлено по умолчанию в версии API 2017-12-01.This setting is the default in API version 2017-12-01. Чтобы использовать строгую балансировку зон, установите для параметра zoneBalance значение true.To use strict zone balance, set zoneBalance to true.

Однозонные масштабируемые наборы и масштабируемые наборы, избыточные между зонамиSingle-zone and zone-redundant scale sets

При развертывании масштабируемого набора виртуальных машин можно использовать одну или несколько зон доступности в регионе.When you deploy a virtual machine scale set, you can choose to use a single Availability Zone in a region, or multiple zones.

Когда вы создаете масштабируемый набор в одной зоне, вы определяете, в какой зоне задействованы все экземпляры виртуальных машин, а управление масштабируемым набором и его автоматическое масштабирование осуществляется только в этой зоне.When you create a scale set in a single zone, you control which zone all those VM instances run in, and the scale set is managed and autoscales only within that zone. Масштабируемый набор, избыточный между зонами, позволяет создать единый масштабируемый набор в рамках нескольких зон.A zone-redundant scale set lets you create a single scale set that spans multiple zones. При создании экземпляров виртуальных машин по умолчанию они будут равномерно распределяется в пределах зон.As VM instances are created, by default they are evenly balanced across zones. Если прерывание происходит в одной из зон, масштабируемый набор не масштабируется автоматически для увеличения емкости.Should an interruption occur in one of the zones, a scale set does not automatically scale out to increase capacity. Лучше всего настроить правила автоматического масштабирования на основе использования ЦП или памяти.A best practice would be to configure autoscale rules based on CPU or memory usage. Правила автоматического масштабирования позволят масштабируемому набору реагировать на потерю экземпляров виртуальных машин в этой зоне путем развертывания новых экземпляров в остальных рабочих зонах.The autoscale rules would allow the scale set to respond to a loss of the VM instances in that one zone by scaling out new instances in the remaining operational zones.

Чтобы использовать зоны доступности, масштабируемый набор должен быть создан в поддерживаемом регионе Azure.To use Availability Zones, your scale set must be created in a supported Azure region. Вы можете создать масштабируемый набор, использующий зоны доступности, с помощью одного из следующих методов:You can create a scale set that uses Availability Zones with one of the following methods:

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

Процесс создания масштабируемого набора, использующего зону доступности, описан в статье Создание масштабируемого набора виртуальных машин с помощью Azure PowerShell.The process to create a scale set that uses an Availability Zone is the same as detailed in the getting started article. При выборе поддерживаемого региона Azure можно создать масштабируемый набор в одной или нескольких из доступных зон, как показано в следующем примере:When you select a supported Azure region, you can create a scale set in one or more available zones, as shown in the following example:

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

Масштабируемый набор и вспомогательные ресурсы, такие как подсистема балансировки нагрузки Azure и общедоступный IP-адрес, создаются в одной зоне, указанной вами.The scale set and supporting resources, such as the Azure load balancer and public IP address, are created in the single zone that you specify.

Использование Azure CLIUse the Azure CLI

Процесс создания масштабируемого набора, использующего зону доступности, описан в статье Создание масштабируемого набора виртуальных машин с помощью Azure PowerShell.The process to create a scale set that uses an Availability Zone is the same as detailed in the getting started article. Чтобы использовать зоны доступности, необходимо создать масштабируемый набор в поддерживаемом регионе Azure.To use Availability Zones, you must create your scale set in a supported Azure region.

Добавьте параметр --zones в команду az vmss create и укажите, какую зону использовать (например, зону 1, 2 или 3).Add the --zones parameter to the az vmss create command and specify which zone to use (such as zone 1, 2, or 3). В следующем примере создается однозонный масштабируемый набор myScaleSet в зоне 1:The following example creates a single-zone scale set named myScaleSet in zone 1:

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image UbuntuLTS \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1

Полный пример однозонного масштабируемого набора и сетевых ресурсов см. в этом примере сценария CLI.For a complete example of a single-zone scale set and network resources, see this sample CLI script

Масштабируемый набор, избыточный между зонамиZone-redundant scale set

Чтобы создать масштабируемый набор, избыточный между зонами, используйте общедоступный IP-адрес и подсистему балансировки нагрузки с номером SKU Стандартный.To create a zone-redundant scale set, you use a Standard SKU public IP address and load balancer. Для повышения избыточности в рамках номера SKU Стандартный создаются сетевые ресурсы, избыточные между зонами.For enhanced redundancy, the Standard SKU creates zone-redundant network resources. Дополнительные сведения см. в разделе Обзор Azure Load Balancer уровня "Стандартный" и Azure Load Balancer уровня "Стандартный" и зоны доступности.For more information, see Azure Load Balancer Standard overview and Standard Load Balancer and Availability Zones.

Чтобы создать масштабируемый набор, избыточный между зонами, укажите несколько зон с помощью параметра --zones.To create a zone-redundant scale set, specify multiple zones with the --zones parameter. В следующем примере создается масштабируемый набор, избыточный между зонами, с именем myScaleSet в зонах 1, 2 и 3:The following example creates a zone-redundant scale set named myScaleSet across zones 1,2,3:

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

Создание и настройка всех ресурсов и виртуальных машин масштабируемого набора в указанных зонах занимает несколько минут.It takes a few minutes to create and configure all the scale set resources and VMs in the zone(s) that you specify. Полный пример масштабируемого набора, избыточного между зонами, и сетевых ресурсов см. в этом примере сценария CLI.For a complete example of a zone-redundant scale set and network resources, see this sample CLI script

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

Чтобы использовать зоны доступности, необходимо создать масштабируемый набор в поддерживаемом регионе Azure.To use Availability Zones, you must create your scale set in a supported Azure region. Добавьте параметр -Zone в команду New-AzVmssConfig и укажите требуемую зону (например, 1, 2 или 3).Add the -Zone parameter to the New-AzVmssConfig command and specify which zone to use (such as zone 1, 2, or 3).

В следующем примере создается однозонный масштабируемый набор с именем myScaleSet в зоне 1 региона Восточная часть США 2.The following example creates a single-zone scale set named myScaleSet in East US 2 zone 1. Сетевые ресурсы Azure для виртуальной сети, общедоступный IP-адрес и подсистема балансировки нагрузки создаются автоматически.The Azure network resources for virtual network, public IP address, and load balancer are automatically created. При появлении запроса введите учетные данные администратора для экземпляров виртуальных машин в масштабируемом наборе:When prompted, provide your own desired administrative credentials for the VM instances in the scale set:

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

Масштабируемый набор, избыточный между зонамиZone-redundant scale set

Чтобы создать масштабируемый набор, избыточный между зонами, укажите несколько зон с помощью параметра -Zone.To create a zone-redundant scale set, specify multiple zones with the -Zone parameter. В следующем примере создается масштабируемый набор, избыточный между зонами, с именем myScaleSet в зонах 1, 2 и 3 региона Восточная часть США 2.The following example creates a zone-redundant scale set named myScaleSet across East US 2 zones 1, 2, 3. Сетевые ресурсы Azure, избыточные между зонами, для виртуальной сети, общедоступный IP-адрес и подсистема балансировки нагрузки создаются автоматически.The zone-redundant Azure network resources for virtual network, public IP address, and load balancer are automatically created. При появлении запроса введите учетные данные администратора для экземпляров виртуальных машин в масштабируемом наборе:When prompted, provide your own desired administrative credentials for the VM instances in the scale set:

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

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

Создание масштабируемого набора, использующего зону доступности, описано в статьях о начале работы для Linux или Windows.The process to create a scale set that uses an Availability Zone is the same as detailed in the getting started article for Linux or Windows. Чтобы использовать зоны доступности, необходимо создать масштабируемый набор в поддерживаемом регионе Azure.To use Availability Zones, you must create your scale set in a supported Azure region. Добавьте свойство zones в тип ресурса Microsoft.Compute/virtualMachineScaleSets в шаблон и укажите требуемую зону (например, 1, 2 или 3).Add the zones property to the Microsoft.Compute/virtualMachineScaleSets resource type in your template and specify which zone to use (such as zone 1, 2, or 3).

В следующем примере создается однозонный масштабируемый набор Linux с именем myScaleSet в зоне 1 региона Восточная часть США 2:The following example creates a Linux single-zone scale set named myScaleSet in East US 2 zone 1:

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": ["1"],
  "sku": {
    "name": "Standard_A1",
    "capacity": "2"
  },
  "properties": {
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {
      "storageProfile": {
        "osDisk": {
          "caching": "ReadWrite",
          "createOption": "FromImage"
        },
        "imageReference":  {
          "publisher": "Canonical",
          "offer": "UbuntuServer",
          "sku": "16.04-LTS",
          "version": "latest"
        }
      },
      "osProfile": {
        "computerNamePrefix": "myvmss",
        "adminUsername": "azureuser",
        "adminPassword": "P@ssw0rd!"
      }
    }
  }
}

Полный пример однозонного масштабируемого набора и сетевых ресурсов см. в этом примере шаблона Resource Manager.For a complete example of a single-zone scale set and network resources, see this sample Resource Manager template

Масштабируемый набор, избыточный между зонамиZone-redundant scale set

Чтобы создать масштабируемый набор, избыточный между зонами, укажите несколько значений в свойстве zones типа ресурса Microsoft.Compute/virtualMachineScaleSets.To create a zone-redundant scale set, specify multiple values in the zones property for the Microsoft.Compute/virtualMachineScaleSets resource type. В следующем примере создается масштабируемый набор, избыточный между зонами, с именем myScaleSet в зонах 1, 2 и 3 региона Восточная часть США 2:The following example creates a zone-redundant scale set named myScaleSet across East US 2 zones 1,2,3:

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

При создании общедоступного IP-адреса или подсистемы балансировки нагрузки укажите свойство "sku": { "name": "Standard" }" для создания сетевых ресурсов, избыточных между зонами.If you create a public IP address or a load balancer, specify the "sku": { "name": "Standard" }" property to create zone-redundant network resources. Необходимо также создать группы безопасности сети и правила, чтобы разрешить любой трафик.You also need to create a Network Security Group and rules to permit any traffic. Дополнительные сведения см. в разделе Обзор Azure Load Balancer уровня "Стандартный" и Azure Load Balancer уровня "Стандартный" и зоны доступности.For more information, see Azure Load Balancer Standard overview and Standard Load Balancer and Availability Zones.

Полный пример масштабируемого набора, избыточного между зонами, и сетевых ресурсов см. в этом примере шаблона Resource Manager.For a complete example of a zone-redundant scale set and network resources, see this sample Resource Manager template

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

После создания масштабируемого набора в зоне доступности см. статьи Развертывание приложения в масштабируемых наборах виртуальных машин или Обзор автомасштабирования с помощью масштабируемых наборов виртуальных машин Azure.Now that you have created a scale set in an Availability Zone, you can learn how to Deploy applications on virtual machine scale sets or Use autoscale with virtual machine scale sets.