Автоматическое обновление расширений для виртуальных машин и масштабируемых наборов в Azure

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

Автоматическое обновление расширений имеет следующие особенности:

  • Поддерживается виртуальными машинами Azure и Масштабируемыми наборами виртуальных машин Microsoft Azure.
  • Обновления применяются в модели развертывания на основе доступности.
  • Для масштабируемого набора виртуальных машин не более 20 % виртуальных машин масштабируемого набора обновляется в одном пакете. Минимальный размер пакета — одна виртуальная машина.
  • Подходит для всех размеров виртуальных машин, а также для расширений Windows и Linux.
  • От автоматических обновлений можно отказаться в любое время.
  • Автоматическое обновление расширений можно включить в Масштабируемых наборах виртуальных машин любого размера.
  • Каждое поддерживаемое расширение регистрируется отдельно, и вы можете выбрать, какие расширения будут обновляться автоматически.
  • Поддерживается во всех регионах общедоступного облака.

Принцип работы автоматического обновления расширений

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

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

Установка обновлений по приоритету доступности

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

Для группы виртуальных машин, проходящих обновление, платформа Azure управляет обновлениями:

Между регионами:

  • Обновление перемещается по всему миру в Azure поэтапно, чтобы предотвратить сбои развертывания на уровне Azure.
  • Один этап может охватывать один или несколько регионов, и обновление выполняется поэтапно только в том случае, если подходящие виртуальные машины в предыдущем этапе были успешно обновлены.
  • Геопарированные регионы не будут обновляться одновременно и не могут находиться на одном и том же региональном этапе.
  • Успешность обновления измеряется путем отслеживания работоспособности виртуальной машины после обновления. Работоспособность виртуальной машины отслеживается с помощью индикаторов работоспособности, имеющихся на платформе, на которой располагается виртуальная машина. Для масштабируемых наборов виртуальных машин состояние виртуальной машины отслеживается с помощью проб работоспособности приложений или расширения определения состояния приложения, если оно применяется к масштабируемому набору.

В пределах региона:

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

В наборе:

  • Все виртуальные машины в общем наборе доступности или масштабируемом наборе не обновляются одновременно.
  • Виртуальные машины в общем наборе доступности обновляются в пределах границ домена обновления, а виртуальные машины в нескольких доменах обновления не обновляются одновременно.
  • Виртуальные машины в общем масштабируемом наборе группируются в пакеты и обновляются в пределах домена обновления. Политики обновления, определенные в масштабируемом наборе, учитываются во время обновления. Если для политики обновления задано значение "Вручную", виртуальные машины не будут обновляться, даже если автоматическое обновление расширения включено.

Процесс обновления для масштабируемых наборов виртуальных машин

  1. Перед началом процесса обновления оркестратор гарантирует, что не более 20% виртуальных машин во всем масштабируемом наборе неработоспособны (по какой-либо причине).

  2. Оркестратор обновления определяет пакет экземпляров виртуальных машин для обновления. Пакет обновления может содержать не более 20 % общего числа виртуальных машин, одна виртуальная машина – минимальный размер пакета. Определение политики обновления и Зоны доступности рассматривается при определении пакета.

  3. После обновления работоспособности виртуальной машины всегда отслеживается перед переходом к следующему пакету. Для масштабируемых наборов с настроенными пробами работоспособности приложения или расширением Работоспособности приложений также отслеживается работоспособности приложений. Обновление ожидает до 5 минут (или определенной конфигурации пробы работоспособности) виртуальной машины перед обновлением следующего пакета. Если виртуальная машина не восстанавливает работоспособность после обновления, то по умолчанию будет переустановлена предыдущая версия расширения на виртуальной машине.

  4. Оркестратор обновления также отслеживает процент виртуальных машин, которые становятся неработоспособными после обновления. Обновление останавливается, если более 20% обновленных экземпляров становятся неработоспособными во время процесса обновления.

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

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

Поддерживаемые расширения

Функция автоматического обновления расширений поддерживает следующие расширения (периодически добавляются другие расширения).

Разрешение автоматического обновления расширений

Чтобы включить автоматическое обновление расширений, необходимо убедиться, что для свойства enableAutomaticUpgrade задано значение true и оно добавляется к каждому определению расширения отдельно.

Использование REST API для виртуальных машин

Чтобы включить автоматическое обновление расширения для расширения (в этом примере расширение агента зависимостей) на виртуальной машине Azure, используйте следующий вызов:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

REST API для масштабируемых наборов виртуальных машин

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

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

Azure PowerShell для виртуальных машин

Используйте командлет Set-AzVMExtension.

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

Azure PowerShell для масштабируемых наборов виртуальных машин

Используйте командлет Add-AzVmssExtension, чтобы добавить расширение в модель масштабируемого набора.

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

Обновите масштабируемый набор, используя команду Update-AzVmss после добавления расширения.

Azure CLI для виртуальных машин

Используйте командлет az vm extension set.

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Azure CLI для масштабируемых наборов виртуальных машин

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

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Шаблон ARM для Виртуальные машины

В следующем примере описывается настройка автоматического обновления расширений для расширения (расширение агента зависимостей в этом примере) на виртуальной машине с помощью Azure Resource Manager

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

Шаблон ARM для Масштабируемые наборы виртуальных машин

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

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

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

С помощью колонки "Портал Azure" можно включить автоматическое обновление расширений в существующих Виртуальные машины и Масштабируемые наборы виртуальных машин.

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

  Изображение

Обновление нескольких расширений

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

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

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

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