Клонирование приложений службы приложений Azure с помощью PowerShell

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль Azure Az PowerShell. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

С выходом Microsoft Azure PowerShell версии 1.1.0 был добавлен новый параметр New-AzWebApp, позволяющий клонировать существующее приложение службы приложений во вновь созданное приложение, размещенное в том же или в другом регионе. Так пользователи смогут легко и быстро развернуть целый ряд приложений в различных регионах.

Клонирование приложений поддерживается для планов Службы приложений ценовой категории "Стандартный", "Премиум", "Премиум версия 2" и "Изолированный". В новой функции действуют те же ограничения, что и в функции архивации службы приложений (см. статью Резервное копирование приложений в службе приложений Azure).

Клонирование существующего приложения

Сценарий. Существует приложение в центрально-южной части США; его содержимое необходимо клонировать в новое приложение в центрально-северной части США. Это можно решить с помощью командлета PowerShell на основе Azure Resource Manager для создания приложения с параметром -SourceWebApp.

Зная имя группы ресурсов, содержащей исходное приложение, можно выполнить следующую команду PowerShell для получения данных исходного приложения (в данном случае оно называется source-webapp).

$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp

Чтобы создать план службы приложений, можно выполнить команду New-AzAppServicePlan, как показано в следующем примере:

New-AzAppServicePlan -Location "North Central US" -ResourceGroupName DestinationAzureResourceGroup -Name DestinationAppServicePlan -Tier Standard

С помощью команды New-AzWebApp создайте приложение в центрально-северной части США и привяжите его к имеющемуся плану Службы приложений. Более того, можно использовать в качестве исходного приложения ту же группу ресурсов или определить новую, как показано в следующей команде.

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp

Для клонирования существующего приложения, включая все соответствующие слоты развертывания, пользователю необходимо будет задать параметр IncludeSourceWebAppSlots. Обратите внимание, что параметр IncludeSourceWebAppSlots поддерживается только для клонирования всего приложения, в том числе всех его слотов. Следующая команда PowerShell показывает, как использовать этот параметр с командой New-AzWebApp:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -IncludeSourceWebAppSlots

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

$destapp = New-AzWebApp -ResourceGroupName NewAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan NewAppServicePlan -SourceWebApp $srcapp

Клонирование существующего приложения в среду службы приложений

Сценарий. Существует приложение в центрально-южной части США, содержимое которого необходимо клонировать в новое приложение в имеющуюся Среду службы приложений (ASE).

Зная имя группы ресурсов, содержащей исходное приложение, можно выполнить следующую команду PowerShell для получения данных исходного приложения (в данном случае оно называется source-webapp).

$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp

Зная имя ASE и имя группы ресурсов, к которой относится ASE, можно создать приложение в существующей ASE, выполнив следующую команду.

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -ASEName DestinationASE -ASEResourceGroupName DestinationASEResourceGroupName -SourceWebApp $srcapp

В связи с обратной совместимостью параметр Location является обязательным, однако при создании приложения в ASE он игнорируется.

Клонирование существующего слота приложения

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

Зная имя группы ресурсов, содержащей исходное приложение, можно выполнить следующую команду PowerShell для получения данных слота исходного приложения (в данном случае оно называется source-appslot), привязанных к source-app.

$srcappslot = Get-AzWebAppSlot -ResourceGroupName SourceAzureResourceGroup -Name source-app -Slot source-appslot

Следующая команда демонстрирует создание клона исходного приложения в новом приложении.

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-app -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcappslot

Настройка диспетчера трафика при клонировании приложения

Создание мультирегиональных приложений и настройка в диспетчере трафика Azure маршрутизации трафика ко всем этим приложениям — это важный сценарий, обеспечивающий высокую доступность приложений клиентов. Клонируя существующее приложение, вы можете подключить оба приложения к новому или существующему профилю диспетчера трафика. Обратите внимание, что поддерживается только версия диспетчера трафика на основе Azure Resource Manager.

Создание профиля диспетчера трафика при клонировании приложения

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

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileName newTrafficManagerProfile

Добавление клонированного приложения в существующий профиль диспетчера трафика

Сценарий. У вас уже есть профиль диспетчера трафика Azure Resource Manager, вам необходимо добавить оба приложения в качестве конечных точек. Для этого нужно собрать идентификатор профиля диспетчера трафика. Кроме того, потребуется идентификатор подписки, имя группы ресурсов и имя имеющегося профиля диспетчера трафика.

$TMProfileID = "/subscriptions/<Your subscription ID goes here>/resourceGroups/<Your resource group name goes here>/providers/Microsoft.TrafficManagerProfiles/ExistingTrafficManagerProfileName"

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

$destapp = New-AzWebApp -ResourceGroupName <Resource group name> -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileId $TMProfileID

Примечание

Если вы получаете сообщение об ошибке "Проверка SSL для имени узла диспетчера трафика завершилась с ошибками", мы рекомендуем использовать атрибут -IgnoreCustomHostNames в командлете PowerShell при выполнении операции клонирования или использовании портала.

Существующие ограничения

Ниже приведены известные ограничения клонирования приложения:

  • Параметры автоматического масштабирования не клонируются
  • Параметры расписания резервного копирования не клонируются
  • Параметры виртуальных сетей не клонируются
  • App Insights не настраивается в целевом приложении автоматически
  • Параметры простой авторизации не клонируются
  • Расширение Kudu не клонируется
  • Правила TiP не клонируются
  • Содержимое базы данных не клонируется.
  • При клонировании в другую единицу масштабирования исходящие IP-адреса изменяются.
  • Недоступно для приложений Linux
  • Управляемые удостоверения не клонированы
  • Недоступно для приложений-функций

Ссылки