Изменение резервирования емкости
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы ✔️ Гибкие масштабируемые наборы
После создания резервирования мощности и группы резервирования мощности может потребоваться изменить резервирование. В этой статье объясняется, как выполнить указанные ниже действия с помощью API, портала Azure и PowerShell.
- Обновление количества экземпляров, зарезервированных в резервировании мощности
- Изменение размера виртуальных машин, связанных с группой резервирования мощности
- Удаление группы резервирования мощности и резервирования мощности
Обновление количества зарезервированных экземпляров
Обновите количество экземпляров виртуальной машины, зарезервированных с помощью функции резервирования мощности.
Внимание
В редких случаях, когда Azure не может выполнить запрос на увеличение количества экземпляров, зарезервированных для существующих резервирований мощности, возможно, что резервирование переходит в состояние сбоя и становится недоступным до тех пор, пока количество не будет восстановлено до исходного значения.
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
В тексте запроса измените свойство capacity
на новое количество экземпляров, которое необходимо зарезервировать:
{
"sku":
{
"capacity": 5
}
}
Обратите внимание, что для свойства capacity
в данном примере сейчас установлено значение 5.
Изменение размера виртуальных машин, связанных с группой резервирования мощности
Если виртуальная машина, для которой выполняется изменение размера, в данный момент подключена к группе резервирования мощности и эта группа не имеет резервирования для целевого размера, необходимо выполнить одно из следующих действий:
- Создание нового резервирования для этого размера
- Перед изменением размера удалите виртуальную машину из группы резервирования.
Проверьте, включен ли целевой размер в группу резервирования:
Получите имена всех резервирований мощности в пределах группы.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01
{ "name": "<CapacityReservationGroupName>", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}", "type": "Microsoft.Compute/capacityReservationGroups", "location": "eastUS", "zones": [ "1" ], "properties": { "capacityReservations": [ { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}" }, { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName2}" } ] } }
Найдите размер виртуальной машины, указанный для каждого резервирования. Следующий пример предназначен для
capacityReservationName1
, но этот шаг можно повторить для других резервирований.GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}?api-version=2021-04-01
{ "name": "capacityReservationName1", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}", "type": "Microsoft.Compute/capacityReservationGroups/capacityReservations", "location": "eastUS", "sku": { "name": "Standard_D2s_v3", "capacity": 3 }, "zones": [ "1" ], "properties": { "reservationId": "<reservationId>", "provisioningTime": "<provisioningTime>", "provisioningState": "Succeeded" } }
Рассмотрим следующие сценарии.
- Если целевой размер виртуальной машины не входит в группу, создайте новое резервирование мощности для целевой виртуальной машины
- Если целевой размер виртуальной машины уже существует в группе, измените размер виртуальной машины
Удаление группы резервирования мощности и резервирования мощности
В Azure можно удалить группу резервирования мощности, если все элементы резервирования мощности удалены и с этой группой не связана ни одна виртуальная машина.
Чтобы удалить резервирование мощности, сначала найдите все связанные с ним виртуальные машины. Список виртуальных машин можно найти в свойстве virtualMachinesAssociated
.
Сначала найдите все виртуальные машины, связанные с группой резервирования мощности, и удалите эту связь.
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/virtualMachines/{VirtualMachineName1}"
},
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName2}"
}
],
"instanceView": {
"capacityReservations": [
{
"name": "{capacityReservationName}",
"utilizationInfo": {
"virtualMachinesAllocated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName1}"
}
]
},
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "<time>"
}
]
}
]
}
}
}
В приведенном выше ответе найдите имена всех виртуальных машин в свойстве virtualMachinesAssociated
и удалите их из группы резервирования мощности, выполнив действия, описанные в разделе Удаление связи между виртуальной машиной и резервированием мощности.
После удаления всех виртуальных машин из группы резервирования мощности удалите элемент резервирования мощности:
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
Наконец, удалите родительскую группу резервирования мощности.
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01
Восстановление количества экземпляров
Правильно сформированный запрос на уменьшение количества зарезервированных экземпляров всегда будет выполнен, независимо от количества виртуальных машин, связанных с резервированием. Однако увеличение количества зарезервированных экземпляров может потребовать больше квот, а от Azure — выполнения дополнительного запроса мощности. В редких случаях, когда Azure не может выполнить запрос на увеличение количества экземпляров, зарезервированных для существующих резервирований мощности, возможно, что резервирование переходит в состояние сбоя и становится недоступным до тех пор, пока количество зарезервированных экземпляров не будет восстановлено до исходного значения.
Примечание.
Если резервирование находится в состоянии сбоя, все виртуальные машины, связанные с резервированием, будут продолжать работать в обычном режиме.
Например, предположим, что myCapacityReservation
содержит 5 зарезервированных экземпляров. Вы запрашиваете еще 5 экземпляров, таким образом, общее количество зарезервированных экземпляров должно увеличиться до 10. Однако из-за ограничения возможностей в регионе Azure не может выполнить запрос на дополнительные 5 экземпляров. В этом случае myCapacityReservation
не сможет перейти в назначенное состояние 10 зарезервированных экземпляров и перейдет в состояние сбоя.
Чтобы устранить этот сбой, выполните следующие действия для поиска старого значения количества зарезервированных экземпляров:
- Перейдите в окно Анализ изменений приложения на портале Azure
- Выберите соответствующую подписку, группу ресурсов и диапазон времени в фильтрах.
- Параметр фильтрации Диапазон времени позволяет выполнить поиск данных не старше 14 дней
- Поиск имени резервирования мощности
- Найдите изменение свойства для
sku.capacity
этого резервирования- Старое значение количества зарезервированных экземпляров отображается в столбце Старое значение
Укажите старое значение количества зарезервированных экземпляров в myCapacityReservation
. После обновления резервирование сразу станет доступно для использования с виртуальными машинами.