Связывание масштабируемого набора виртуальных машин с универсальной оркестрацией с группой резервирования емкости
Область применения: ✔️ Универсальный масштабируемый набор
Azure Масштабируемые наборы виртуальных машин имеет два режима:
- Единая оркестрация. В этом режиме масштабируемые наборы виртуальных машин используют профиль виртуальной машины или шаблон для масштабирования до нужной емкости. Хотя существует некоторая возможность управлять или настраивать отдельные экземпляры виртуальных машин, единообразная оркестрация использует идентичные экземпляры виртуальных машин. Эти экземпляры предоставляются через API виртуальных машин масштабируемого набора виртуальных машин и несовместимы с командами API, которые являются стандартными для виртуальных машин инфраструктуры Azure как службы (IaaS). Так как масштабируемый набор выполняет все фактические операции виртуальной машины, резервирование связано с масштабируемым набором виртуальных машин напрямую. После того как масштабируемый набор связан с резервированием, все последующие выделения виртуальных машин выполняются для резервирования.
- Гибкая оркестрация. В этом режиме вы получаете больше гибкости для управления отдельными экземплярами виртуальных машин масштабируемого набора виртуальных машин. Они могут использовать стандартные API виртуальных машин IaaS Azure, а не с помощью интерфейса масштабируемого набора. Чтобы использовать резервирования с режимом гибкой оркестрации, определите свойство масштабируемого набора виртуальных машин и свойство резервирования емкости на каждой виртуальной машине.
Дополнительные сведения об этих режимах см. в Масштабируемые наборы виртуальных машин режимах оркестрации.
Это содержимое относится к режиму универсальной оркестрации. Режим гибкой оркестрации см. в разделе "Связывание масштабируемого набора виртуальных машин с гибкой оркестрацией" с группой резервирования емкости.
Ограничения масштабируемых наборов в режиме универсальной оркестрации
- Чтобы масштабируемые наборы виртуальных машин в единой оркестрации были совместимы с резервированием емкости,
singlePlacementGroup
свойство должно иметь значениеFalse
. - Параметр доступности статического фиксированного распространения для многозонных масштабируемых наборов не поддерживается с резервированием емкости. Для этого параметра требуется использовать пять доменов сбоя. Однако резервирования поддерживают только три домена сбоя для общего назначения. Мы рекомендуем использовать параметр "Максимальное распространение ", который распределяет виртуальные машины по нескольким доменам сбоя как можно больше в пределах каждой зоны. При необходимости настройте конфигурацию личного домена сбоя в трех или меньшем размере.
При использовании резервирования емкости существуют некоторые другие ограничения. Полный список см. в обзоре резервирования емкости.
Связывание нового масштабируемого набора виртуальных машин с группой резервирования емкости
Внимание
Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell, и Azure CLI по умолчанию используют режим гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и действиях, которые необходимо предпринять, см. в статье "Критические изменения" для клиентов PowerShell/CLI VMSS — Microsoft Community Hub.
Чтобы связать новый универсальный масштабируемый набор виртуальных машин с группой резервирования емкости, создайте следующий PUT
запрос к поставщику Microsoft.Compute
:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01
Добавьте свойство capacityReservationGroup
в свойство virtualMachineProfile
:
{
"name": "<VMScaleSetName>",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"location": "eastus",
"sku": {
"name": "Standard_D2s_v3",
"tier": "Standard",
"capacity": 3
},
"properties": {
"virtualMachineProfile": {
"capacityReservation": {
"capacityReservationGroup":{
"id":"subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroup/{CapacityReservationGroupName}"
}
},
"osProfile": {
…
},
"storageProfile": {
…
},
"networkProfile": {
…,
"extensionProfile": {
…
}
}
}
Связывание существующего масштабируемого набора виртуальных машин с группой резервирования емкости
Чтобы добавить существующую группу резервирования емкости в существующий универсальный масштабируемый набор:
- Остановите масштабируемый набор, чтобы освободить экземпляры виртуальной машины.
- Обновите масштабируемый набор, чтобы использовать соответствующую группу резервирования емкости.
- Запустите масштабируемый набор.
Этот процесс гарантирует совместимость размещения резервирования емкости и масштабируемого набора в регионе.
Важные заметки о политиках обновления
- Автоматическое обновление. В этом режиме экземпляры виртуальных машин масштабируемого набора автоматически связываются с группой резервирования емкости без каких-либо дальнейших действий. При повторном выделении виртуальных машин масштабируемого набора они начинают потреблять зарезервированную емкость.
- Последовательное обновление. В этом режиме экземпляры виртуальных машин масштабируемого набора связаны с группой резервирования емкости без каких-либо дальнейших действий. Однако они обновляются в пакетном режиме, и между пакетами может быть необязательный ненулевой интервал. При повторном выделении виртуальных машин масштабируемого набора они начинают потреблять зарезервированную емкость.
- Обновление вручную. В этом режиме ничего не происходит с экземплярами виртуальных машин масштабируемого набора, когда масштабируемый набор виртуальных машин подключен к группе резервирования емкости. Необходимо обновить каждую виртуальную машину масштабируемого набора, обновив ее с помощью последней модели масштабируемого набора.
Отмените выделение масштабируемого набора виртуальных машин:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/deallocate?api-version=2021-04-01
Добавьте свойство
capacityReservationGroup
в модель масштабируемого набора. Создайте следующийPUT
запрос к поставщикуMicrosoft.Compute
:PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01
Включите в текст запроса свойство
capacityReservationGroup
:"location": "eastus", "properties": { "virtualMachineProfile": { "capacityReservation": { "capacityReservationGroup": { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}" } } } }
Просмотр сопоставления масштабируемого набора виртуальных машин с представлением экземпляра
После того как универсальный масштабируемый набор виртуальных машин связан с группой резервирования емкости, все последующие выделения виртуальных машин будут выполняться при резервировании емкости. Azure автоматически находит подходящее резервирование мощности в группе и использует зарезервированный слот.
Представление экземпляра группы резервирования емкости отражает новые виртуальные машины масштабируемого набора в virtualMachinesAssociated
разделе и virtualMachinesAllocated
свойства:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?$expand=instanceview&api-version=2021-04-01
{
"name": "<CapacityReservationGroupName>",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}",
"type": "Microsoft.Compute/capacityReservationGroups",
"location": "eastus"
},
"properties": {
"capacityReservations": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{CapacityReservationName}"
}
],
"virtualMachinesAssociated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}"
}
],
"instanceView": {
"capacityReservations": [
{
"name": "<CapacityReservationName>",
"utilizationInfo": {
"virtualMachinesAllocated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}"
}
]
},
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "2021-05-25T15:12:10.4165243+00:00"
}
]
}
]
}
}
}
Рекомендации по регионам и зонам доступности
Масштабируемые наборы виртуальных машин можно создавать по регионам или в одной или нескольких зонах доступности, чтобы защитить их от сбоя на уровне центра обработки данных. Дополнительные сведения о многозональных масштабируемых наборах виртуальных машин см. в статье о масштабируемых наборах виртуальных машин, использующих зоны доступности.
Внимание
Расположение (регион и зоны доступности) масштабируемого набора виртуальных машин, а группа резервирования емкости должна соответствовать успешной связи. Для регионального масштабируемого набора регион должен совпадать между масштабируемым набором и группой резервирования емкости. Для зонального масштабируемого набора регионы и зоны должны соответствовать между масштабируемым набором и группой резервирования емкости.
Если масштабируемый набор распространяется по нескольким зонам, он всегда пытается равномерно развертывать между включенными зонами доступности. Из-за этого даже развертывания группа резервирования емкости всегда должна иметь одинаковое количество зарезервированных виртуальных машин в каждой зоне. Как иллюстрация того, почему это даже развертывание важно, рассмотрим следующий пример.
В этом примере для каждой зоны зарезервировано разное количество машин. Предположим, что масштабируемый набор виртуальных машин масштабируется до 75 экземпляров. Так как масштабируемый набор всегда пытается развернуть равномерно между зонами, распределение виртуальных машин должно выглядеть следующим образом:
Зона | Зарезервированное количество | Количество виртуальных машин масштабируемого набора в каждой зоне | Неиспользуемое количество зарезервировано | Превышение числа |
---|---|---|---|---|
1 | 40 | 25 | 15 | 0 |
2 | 20 | 25 | 0 | 5 |
3 | 15 | 25 | 0 | 10 |
В этом случае масштабируемый набор взимает дополнительную стоимость для 15 неиспользуемых экземпляров в зоне 1. Горизонтальное масштабирование также зависит от 5 виртуальных машин в зоне 2 и 10 виртуальных машин в зоне 3, которые не защищены резервированием емкости. Если для каждой зоны зарезервировано 25 экземпляров емкости, все 75 виртуальных машин будут защищены резервированием емкости, а развертывание не будет нести дополнительных затрат на неиспользуемые экземпляры.
Так как резервирования могут быть в целом, масштабируемый набор может продолжать масштабироваться в обычном режиме за пределами резервирования. Единственное различие заключается в том, что виртуальные машины, выделенные выше зарезервированного количества, не охватываются соглашением об уровне обслуживания резервирования емкости. Дополнительные сведения см. в разделе "Общее резервирование емкости".