保留 IP 地址(经典部署)

Azure 中的 IP 地址分为两类:动态和保留。 默认情况下,Azure 管理的公共 IP 地址是动态的。 这意味着,用于特定云服务的 IP 地址(VIP)或用于直接访问虚拟机或角色实例的 ILPIP 地址,可能会在资源被关闭或停止(去分配)时不时更改。

若要防止 IP 地址更改,可以保留 IP 地址。 保留 IP 只能用作 VIP,确保云服务的 IP 地址保持不变,即使资源已关闭或停止(解除分配)。 此外,可以将用作 VIP 的现有动态 IP 转换为保留 IP 地址。

重要

Azure 有两种不同的部署模型用于创建和使用资源: 资源管理器和经典部署模型。 本文介绍使用经典部署模型的情况。 Microsoft 建议大多数新部署使用 Resource Manager 模型。 了解如何使用 Resource Manager 部署模型保留静态公共 IP 地址。

若要详细了解 Azure 中的 IP 地址,请阅读 IP 地址 文章。

何时需要保留 IP?

  • 你希望确保 IP 保留在订阅中。 如果想要保留在任何情况下未从订阅中释放的 IP 地址,则应使用保留的公共 IP。
  • 你希望 IP 与云服务保持一致,即使在已停止或解除分配状态(VM)之间也是如此。 如果希望使用不更改的 IP 地址访问服务,即使云服务中的 VM 已关闭或停止(已解除分配)。
  • 你希望确保来自 Azure 的出站流量使用可预测的 IP 地址。 可能已将本地防火墙配置为仅允许来自特定 IP 地址的流量。 通过保留 IP,你知道源 IP 地址,并且由于 IP 更改而不需要更新防火墙规则。

常见问题解答

  • 是否可以为所有 Azure 服务使用保留 IP? 不是。 保留 IP 只能用于通过 VIP 公开的 VM 和云服务实例角色。
  • 可以拥有多少个保留 IP? 有关详细信息,请参阅 Azure 限制 文章。
  • 预留 IP 是否收费? 有时。 有关定价详细信息,请参阅 “保留 IP 地址定价详细信息 ”页。
  • 如何保留 IP 地址? 可以使用 PowerShell、 Azure 管理 REST APIAzure 门户 在 Azure 区域中保留 IP 地址。 保留 IP 地址与订阅相关联。
  • 是否可以将保留 IP 与基于关联组的 VNet 配合使用? 不是。 仅区域 VNet 支持保留 IP。 与地缘组关联的 VNet 不支持保留的 IP 地址。 有关将 VNet 与区域或地缘组关联的详细信息,请参阅 “关于区域 VNet 和地缘组 ”一文。

管理预留的 VIP

使用 Azure PowerShell (经典版)

在使用预留 IP 之前,必须将其添加到订阅。 从 美国中部 位置可用的公共 IP 地址池创建保留 IP,如下所示:

注释

对于经典部署模型,必须安装 Azure PowerShell 的服务管理版本。 有关详细信息,请参阅 安装 Azure PowerShell 服务管理模块

  New-AzureReservedIP –ReservedIPName MyReservedIP –Location "Central US"

但是,请注意,不能指定保留的 IP。 若要查看订阅中保留的 IP 地址,请运行以下 PowerShell 命令,并注意 ReservedIPNameAddress 的值:

Get-AzureReservedIP

预期输出:

ReservedIPName       : MyReservedIP
Address              : 23.101.114.211
Id                   : d73be9dd-db12-4b5e-98c8-bc62e7c42041
Label                :
Location             : Central US
State                : Created
InUse                : False
ServiceName          :
DeploymentName       :
OperationDescription : Get-AzureReservedIP
OperationId          : 55e4f245-82e4-9c66-9bd8-273e815ce30a
OperationStatus      : Succeeded

注释

使用 PowerShell 创建保留 IP 地址时,无法指定要在其中创建保留 IP 的资源组。 Azure 会自动将其置于名为 Default-Networking 的 资源组中。 如果使用 Azure 门户创建保留 IP,则可以指定选择的任何资源组。 但是,如果在Default-Networking以外的资源组中创建保留 IP,那么每当您使用命令Get-AzureReservedIPRemove-AzureReservedIP引用保留 IP 时,必须使用名称 Group resource-group-name reserved-ip-name来引用。 例如,如果在名为 myResourceGroup 的资源组中创建名为 myReservedIP 的保留 IP,则必须将保留 IP 的名称引用为 Group myResourceGroup myReservedIP。  

保留 IP 后,该 IP 将一直关联到订阅,直到将其删除。 删除保留 IP,如下所示:

Remove-AzureReservedIP -ReservedIPName "MyReservedIP"

使用 Azure CLI (经典版)

在美国中部 位置的可用公共 IP 地址池中,使用 Azure 经典 CLI 创建保留 IP,如下所示:

注释

对于经典部署,必须使用 Azure 经典 CLI。 有关安装 Azure 经典 CLI 的信息,请参阅 安装 Azure 经典 CLI

命令:

azure network reserved-ip create <name> <___location>

示例:

azure network reserved-ip create MyReservedIP centralus

可以使用 Azure CLI 查看订阅中保留的 IP 地址,如下所示:

命令:

azure network reserved-ip list

保留 IP 后,该 IP 将一直关联到订阅,直到将其删除。 删除保留 IP,如下所示:

命令:

azure network reserved-ip delete <name>

示例:

azure network reserved-ip delete MyReservedIP

保留现有云服务的 IP 地址

可以通过添加 -ServiceName 参数来保留现有云服务的 IP 地址。 保留位于美国中部位置的云服务 TestService 的 IP 地址,如下所示:

  • 使用 Azure PowerShell(经典):

    New-AzureReservedIP –ReservedIPName MyReservedIP –Location "Central US" -ServiceName TestService
    
  • 使用 Azure CLI(经典):

    命令:

     azure network reserved-ip create <name> <___location> -r <service-name> -d <deployment-name>
    

    示例:

      azure network reserved-ip create MyReservedIP centralus -r TestService -d asmtest8942
    

将保留 IP 关联到新的云服务

以下脚本创建新的保留 IP,然后将其关联到名为 TestService 的新云服务。

使用 Azure PowerShell (经典版)

New-AzureReservedIP –ReservedIPName MyReservedIP –Location "Central US"

$image = Get-AzureVMImage|?{$_.ImageName -like "*RightImage-Windows-2012R2-x64*"}

New-AzureVMConfig -Name TestVM -InstanceSize Small -ImageName $image.ImageName `
| Add-AzureProvisioningConfig -Windows -AdminUsername adminuser -Password MyP@ssw0rd!! `
| New-AzureVM -ServiceName TestService -ReservedIPName MyReservedIP -Location "Central US"

注释

在创建用于云服务的保留 IP 时,仍需通过 VIP:<端口号> 来引用虚拟机以进行入站通信。 保留 IP 并不意味着可以直接连接到 VM。 预留 IP 分配给 VM 部署到的云服务。 如果要直接通过 IP 连接到 VM,则必须配置实例级公共 IP。 实例级公共 IP 是直接分配给 VM 的公共 IP 类型(称为 ILPIP)。 它不能被预订。 有关详细信息,请阅读 实例级公共 IP(ILPIP) 一文。

从正在运行的部署中删除保留 IP

删除添加到新云服务的保留 IP,如下所示:

使用 Azure PowerShell (经典版)

Remove-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName TestService

使用 Azure CLI (经典版)

命令:

azure network reserved-ip disassociate <name> <service-name> <deployment-name>

示例:

azure network reserved-ip disassociate MyReservedIP TestService asmtest8942

注释

从正在运行的部署中删除保留 IP 并不会取消订阅中的预留状态。 它只是简单地释放该 IP,以便您的订阅中的其他资源可以使用。

若要从订阅中完全删除保留 IP,请运行以下命令:

命令:

azure network reserved-ip delete <name>

示例:

azure network reserved-ip delete MyReservedIP

将保留的IP地址关联到正在运行的部署

使用 Azure PowerShell (经典版)

以下命令使用名为 TestVM2 的新 VM 创建名为 TestService2 的云服务。 然后将名为 MyReservedIP 的现有保留 IP 关联到云服务。

$image = Get-AzureVMImage|?{$_.ImageName -like "*RightImage-Windows-2012R2-x64*"}

New-AzureVMConfig -Name TestVM2 -InstanceSize Small -ImageName $image.ImageName `
| Add-AzureProvisioningConfig -Windows -AdminUsername adminuser -Password MyP@ssw0rd!! `
| New-AzureVM -ServiceName TestService2 -Location "Central US"

Set-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName TestService2

使用 Azure CLI (经典版)

可以使用 Azure CLI 将新的保留 IP 关联到正在运行的云服务部署,如下所示:

命令:

azure network reserved-ip associate <name> <service-name> <deployment-name>

示例:

azure network reserved-ip associate MyReservedIP TestService asmtest8942

使用服务配置文件将保留 IP 关联到云服务

还可以使用服务配置(CSCFG)文件将保留 IP 关联到云服务。 以下示例 xml 演示如何将云服务配置为使用名为 MyReservedIP 的保留 VIP:

   <?xml version="1.0" encoding="utf-8"?>
    <ServiceConfiguration serviceName="ReservedIPSample" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2014-01.2.3">
      <Role name="WebRole1">
        <Instances count="1" />
        <ConfigurationSettings>
          <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
        </ConfigurationSettings>
      </Role>
      <NetworkConfiguration>
        <AddressAssignments>
          <ReservedIPs>
           <ReservedIP name="MyReservedIP"/>
          </ReservedIPs>
        </AddressAssignments>
      </NetworkConfiguration>
    </ServiceConfiguration>

后续步骤