为云服务配置多个 VIP

重要

Azure 负载均衡器支持两种不同的类型:“基本”和“标准”。 本文介绍基本负载均衡器。 有关标准负载均衡器的详细信息,请参阅标准负载均衡器概述

可以使用 Azure 提供的 IP 地址通过公共 Internet 访问 Azure 云服务。 此公共 IP 地址称为 VIP(虚拟 IP),因为它链接到 Azure 负载均衡器,而不是云服务中的虚拟机(VM)实例。 可以使用单个 VIP 访问云服务中的任何 VM 实例。

但是,在某些情况下,可能需要多个 VIP 作为同一云服务的入口点。 例如,云服务可能会托管多个需要使用默认端口 443 建立 SSL 连接的网站,因为每个站点都托管给其他客户或租户。 在此方案中,需要为每个网站使用不同的面向公众的 IP 地址。 下图演示了一个典型的多租户 Web 托管,需要在同一公共端口上使用多个 SSL 证书。

多 VIP SSL 方案

在上面的示例中,所有 VIP 使用相同的公共端口(443),流量会重定向到一个或多个唯一专用端口上的负载均衡 VM,以便托管所有网站的云服务的内部 IP 地址。

注释

需要使用多个 VIP 的另一种情况是在同一组虚拟机上托管多个 SQL AlwaysOn 可用性组侦听器。

默认情况下,VIP 是动态的,这意味着分配给云服务的实际 IP 地址可能会随时间而变化。 为防止这种情况发生,可以为服务保留 VIP。 若要了解有关保留 VIP 的详细信息,请参阅 保留公共 IP

注释

有关 VIP 和预留 IP 定价的信息,请参阅 IP 地址定价

可以使用 PowerShell 验证云服务使用的 VIP,以及添加和删除 VIP、将 VIP 关联到终结点,以及在特定 VIP 上配置负载均衡。

局限性

目前,多 VIP 功能仅限于以下方案:

  • 仅 IaaS。 只能为包含虚拟机的云服务启用多VIP功能。 在 PaaS 场景中无法对角色实例使用多重 VIP。
  • PowerShell 仅。 只能使用 PowerShell 管理多 VIP。

这些限制是暂时性的,随时可能会更改。 请务必重新访问此页面以验证将来的更改。

如何将 VIP 添加到云服务

若要将 VIP 添加到服务,请运行以下 PowerShell 命令:

Add-AzureVirtualIP -VirtualIPName Vip3 -ServiceName myService

此命令显示类似于以下示例的结果:

OperationDescription OperationId                          OperationStatus
-------------------- -----------                          ---------------
Add-AzureVirtualIP   4bd7b638-d2e7-216f-ba38-5221233d70ce Succeeded

如何从云服务中删除 VIP

若要删除在上面的示例中添加到服务的 VIP,请运行以下 PowerShell 命令:

Remove-AzureVirtualIP -VirtualIPName Vip3 -ServiceName myService

重要

如果 VIP 没有与之关联的终结点,则只能删除该 VIP。

如何从云服务中检索 VIP 信息

若要检索与云服务关联的 VIP,请运行以下 PowerShell 脚本:

$deployment = Get-AzureDeployment -ServiceName myService
$deployment.VirtualIPs

该脚本显示类似于以下示例的结果:

Address         : 191.238.74.148
IsDnsProgrammed : True
Name            : Vip1
ReservedIPName  :
ExtensionData   :

Address         :
IsDnsProgrammed :
Name            : Vip2
ReservedIPName  :
ExtensionData   :

Address         :
IsDnsProgrammed :
Name            : Vip3
ReservedIPName  :
ExtensionData   :

在此示例中,云服务有 3 个 VIP:

  • Vip1 是默认 VIP,你知道,因为 IsDnsProgrammedName 的值设置为 true。
  • Vip2Vip3 不使用,因为它们没有任何 IP 地址。 仅当将终结点关联到 VIP 时,才会使用它们。

注释

只有当额外的 VIP 与终结点关联后,您的订阅才会开始收费。 有关定价的详细信息,请参阅 IP 地址定价

如何将 VIP 关联到终结点

若要将云服务上的 VIP 关联到终结点,请运行以下 PowerShell 命令:

Get-AzureVM -ServiceName myService -Name myVM1 |
    Add-AzureEndpoint -Name myEndpoint -Protocol tcp -LocalPort 8080 -PublicPort 80 -VirtualIPName Vip2 |
    Update-AzureVM

该命令在端口 80上创建一个名为 Vip2 的终结点,并将其链接到云服务 myService 上的名为 myVM1 的 VM,使用 TCP 协议通过端口 8080进行连接。

若要验证配置,请运行以下 PowerShell 命令:

$deployment = Get-AzureDeployment -ServiceName myService
$deployment.VirtualIPs

输出与以下示例类似:

Address         : 191.238.74.148
IsDnsProgrammed : True
Name            : Vip1
ReservedIPName  :
ExtensionData   :

Address         : 191.238.74.13
IsDnsProgrammed :
Name            : Vip2
ReservedIPName  :
ExtensionData   :

Address         :
IsDnsProgrammed :
Name            : Vip3
ReservedIPName  :
ExtensionData   :

如何在特定 VIP 上启用负载均衡

可以将单个 VIP 与多个虚拟机相关联,以实现负载均衡。 例如,你有一个名为 myService的云服务,以及名为 myVM1 的两个虚拟机,myVM2。 云服务有多个 VIP,其中一个名为 Vip2。 如果要确保到 Vip2 的端口 81 的所有流量在 8181端口上均衡分配到 myVM1myVM2,请运行以下 PowerShell 脚本:

Get-AzureVM -ServiceName myService -Name myVM1 |
    Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet -Protocol tcp -LocalPort 8181 -PublicPort 81 -VirtualIPName Vip2 -DefaultProbe |
    Update-AzureVM

Get-AzureVM -ServiceName myService -Name myVM2 |
    Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet -Protocol tcp -LocalPort 8181 -PublicPort 81 -VirtualIPName Vip2  -DefaultProbe |
    Update-AzureVM

还可以更新负载均衡器以使用不同的 VIP。 例如,如果运行下面的 PowerShell 命令,则会更改负载均衡集以使用名为 Vip1 的 VIP:

Set-AzureLoadBalancedEndpoint -ServiceName myService -LBSetName myLBSet -VirtualIPName Vip1

后续步骤

Azure Monitor 日志 为 Azure 负载均衡

面向 Internet 的负载均衡器概述

开始使用面向 Internet 的负载均衡器

虚拟网络概述

保留 IP REST API