内部负载平衡
我们非常高兴地宣布Azure对“内部负载平衡”(ILB)的支持。利用内部负载平衡 (ILB),可以通过私有 IP地址运行高可用服务,而私有 IP地址只能在云服务或虚拟网络 (VNet)内访问,因此为该终端提供了额外的安全性。ILB终端在虚拟网络内使用时,也可从允许一些强大混合场景的内部部署和其他互相连接的VNet进行访问。
可通过两种方式使用 ILB
1. 在云服务内,从Azure私有 IP地址空间获取负载平衡的 IP
2. 在虚拟网络内,从客户指定的虚拟子网或静态VNet IP 地址中获取负载平衡的IP。
关键场景
ILB和当前 Azure 的公共负载平衡相比,增强了安全性。它限制了可访问性,并创建了指向云服务或虚拟网络的负载平衡虚拟IP地址之间的信任边界,不需要公用 Internet。这样,内部的业务线应用程序便能够在 Azure内运行,并可从云或内部部署访问。以下部分列出了一些常见用例:
-
应用程序层和后端数据库可通过ILB运行,所以不会暴露给公用 Internet,但通过负载平衡仍可获得高可用性。这在安全增强方面是一次巨大的飞跃。
-
ILB VIP通过安全的 IP安全隧道,可以在整个虚拟网络、内部部署以及互相连接的 VNet访问。这样,将前端 VIP放在 ILB,就可以运行面向 Intranet(仅适用于公司网络)的 SharePoint服务器场,如下图中所示:
使用说明
当前,内部负载平衡仍在预览阶段,并将在不久的将来正式发布(GA)。您可在此处找到有关 ILB 的详细说明文档
目前无法通过门户配置内部负载平衡,未来将支持此操作。但可以使用Powershell cmdlet配置。在区域虚拟网络内进行部署时或在虚拟网络外进行新部署时可以使用ILB。以下部分将概述这两种类型的用法。
区域虚拟网络内的 ILB
-
区域虚拟网络云服务中创建的ILB终端,可在整个虚拟网络、互相连接的 VNet以及内部部署站点访问。
-
以下代码段示例说明了在区域虚拟网络“VNetUSWest”内部署的云服务中如何配置内部负载平衡器。在此处可了解关于区域虚拟网络的更多信息
-
在VNet内使用 ILB时,从 VNet地址空间还可以指定内部负载平衡器的子网,甚至更精确,可以指定IP地址。
<span style="font-size:14px;"># VM Configuration $web1 = New-AzureVMConfig -Name "web1" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | Set-AzureSubnet FrontEndSubnet $web2 = New-AzureVMConfig -Name "web2" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | Set-AzureSubnet FrontEndSubnet # Create the Deployments New-AzureVM -ServiceName "MyWebsite1" -VMs $web1 -Location "West US" -VNetName VNetUSWest New-AzureVM -ServiceName "MyWebsite1" -VMs $web2 -Location "West US" # Add Internal Load Balancer to the service Add-AzureInternalLoadBalancer -InternalLoadBalancerName MyILB -SubnetName FrontEndSubnet -ServiceName MyWebsite1 # Add load balanced endpoints to ILB Get-AzureVM -ServiceName MyWebsite1 -Name web1 | Add-AzureEndpoint -Name "intwebep" -LBSetName "intwebeplb" -Protocol tcp -LocalPort 100 -PublicPort 100 -ProbePort 100 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName MyILB | Update-AzureVM Get-AzureVM -ServiceName MyWebsite1 -Name web2 | Add-AzureEndpoint -Name "intwebep" -LBSetName "intwebeplb" -Protocol tcp -LocalPort 100 -PublicPort 100 -ProbePort 100 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName MyILB | Update-AzureVM </span>
- 在本示例中,ILB将从子网“FrontEndSubnet”中获取 IP。
-
可使用cmdlet获取 ILB相关信息,如下所示:
<span style="font-size:14px;"># 获取内部负载平衡器信息 Get-AzureService -ServiceName MyWebsite1 | Get-AzureInternalLoadBalancer # 获取终端的 ILB 信息 Get-AzureVM -ServiceName MyWebsite1 -Name web1 | Get-AzureEndpoint </span>
云服务内的 ILB
-
在区域虚拟网络外部的云服务中创建的ILB终端只能在此云服务内访问。
-
必须在云服务创建第一个部署时设置ILB配置,如下面的 cmdlet示例所示。
<span style="font-size:14px;"># 创建本地 ILB 对象 $myilbconfig = New-AzureInternalLoadBalancerConfig -InternalLoadBalancerName "MyILB" # 为新服务添加内部负载平衡器 New-AzureVMConfig -Name "Instance1" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | New-AzureVM -ServiceName "Website2" -InternalLoadBalancerConfig $myilbconfig -Location "West US" </span>
常见问题
1.我能否将ILB添加到我在虚拟网络中的现有部署?
只有在虚拟网络是区域虚拟网络时才能执行此操作。但在不久的将来,所有虚拟网络都将转换成一个区域虚拟网络,届时将可能实现此操作。
2.在“SQL始终打开”的情况下我能否使用 ILB?
现在还不能。很快即将发布此支持。
3.我已经有一个负载平衡终端在区域虚拟网络部署中,我能否将此终端连接到ILB?
不能。应在创建终端时引用 ILB。常规终端不可能转换成 ILB 终端,反之亦然。很快即将支持此功能。
4.ILB能否用于终端ACL?
可以,ILB可以用于终端 ACL。ACL用于区域虚拟网络时,通过限制甚至在虚拟网络内部的访问,可在客户IP地址空间中使用 ACL。
5.如果在我的虚拟机上设置了 ILB,从相同虚拟机上进行的“回路”(loopback)能否在负载平衡的 VIP上运行?
不会。您无法从正在进行负载平衡的相同虚拟机访问 ILB VIP。
6.我能否在 PaaS 服务 (Web role/Worker role)上使用 ILB?
ILB还设计为可用于 Web role/Worker role,但目前尚未在服务模型 (cscfg/csdef)中公开。很快即将支持此功能。
关键词:
本文翻译自:http://azure.microsoft.com/blog/2014/05/20/internal-load-balancing/