Compartir a través de

使用 PowerShell 克隆 Azure App Service 应用

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

在发行的 Azure PowerShell 版本 1.1.0 中,为 New-AzWebApp 添加了新选项,用于将现有应用服务应用克隆到不同区域或相同区域中的新建应用。 使用此选项,客户可跨不同区域快速轻松地部署多个应用。

标准、高级、高级 V2 和独立应用服务计划支持应用克隆。 新功能使用与应用服务备份功能相同的限制,具体请参阅在 Azure 应用服务中备份应用

克隆现有应用

方案:你想要将位于中国东部区域的现有应用的内容克隆到位于中国北部区域的新应用。 结合 -SourceWebApp 选项使用 Azure 资源管理器版本的 PowerShell cmdlet 来创建新的应用,即可实现此目的。

如果知道包含源应用的资源组名称,就可以使用以下 PowerShell 命令来获取源应用的信息(在本例中,该应用名为 source-webapp):

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

要创建新的应用服务计划,可按以下示例中所示来使用 New-AzAppServicePlan 命令

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

使用 New-AzWebApp 命令,可在中国北部区域中新建应用,并将其绑定到现有应用服务计划。 此外,还可以使用相同的资源组作为源应用,或定义新的资源组,如以下命令所示:

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

要克隆现有应用(包括所有关联的部署槽位),需要使用 IncludeSourceWebAppSlots 参数。 请注意,仅在克隆整个应用(包括其所有槽)时才支持 IncludeSourceWebAppSlots 参数。 以下 PowerShell 命令演示如何在 New-AzWebApp 命令中使用该参数:

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

要在同一区域中克隆现有应用,需要在同一区域中创建新资源组和新的应用服务计划,然后使用以下 PowerShell 命令来克隆应用:

$destapp = New-AzWebApp -ResourceGroupName NewAzureResourceGroup -Name dest-webapp -Location "China East" -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 "China North" -AppServicePlan DestinationAppServicePlan -ASEName DestinationASE -ASEResourceGroupName DestinationASEResourceGroupName -SourceWebApp $srcapp

由于使用了旧版本,需要提供 Location 参数,但在 ASE 中创建应用时,可忽略该参数。

克隆现有的应用槽

方案:希望将应用的现有部署槽位克隆到新应用或新槽位。 新的应用可与原始应用槽位于相同或不同的区域。

如果知道包含源应用的资源组名称,就可以使用以下 PowerShell 命令来获取与 source-app 相关的源应用的槽位信息(在本例中,该应用名为 source-appslot):

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

以下命令演示如何在新应用中创建源应用的克隆:

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

在克隆应用时配置流量管理器

通过创建多区域应用和配置 Azure 流量管理器来将流量路由到所有这些应用是一个重要的方案,可确保客户应用的高可用性。 克隆现有应用时,可以选择将两个应用都连接到新的或现有的流量管理器配置文件。 仅支持 Azure 资源管理器版本的流量管理器。

在克隆应用时创建新的流量管理器配置文件

方案:用户想要将应用克隆到另一个区域,同时配置包含这两个应用的 Azure 资源管理器流量管理器配置文件。 以下命令演示如何在新应用中创建源应用的克隆,同时配置新的流量管理器配置文件:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "China East" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileName newTrafficManagerProfile

将新克隆的应用添加到现有的流量管理器配置文件

方案:用户已有一个 Azure 资源管理器流量管理器配置文件,现在想要将两个应用都添加为终结点。 要执行此操作,首先需要组合现有流量管理器配置文件 ID。 需要订阅 ID、资源组名称和现有流量管理器配置文件名称。

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

获取流量管理器 ID 之后,根据以下命令演示在新应用中创建源应用的克隆,同时将它们添加到现有流量管理器配置文件:

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

注意

如果收到一条错误消息显示“对流量管理器主机名的 SSL 验证失败”,则建议在执行克隆操作时使用 -IgnoreCustomHostNames 属性,或者使用门户。

当前限制

下面是应用克隆的已知限制:

  • 不会克隆自动缩放设置
  • 不会克隆备份计划设置
  • 不会克隆 VNET 设置
  • 不会自动在目标应用上设置 App Insights
  • 不会克隆简易身份验证设置
  • 不会克隆 Kudu 扩展
  • 不会克隆 TiP 规则
  • 不会克隆数据库内容
  • 如果克隆到不同的缩放单元,出站 IP 地址会更改

参考