我正在 Azure 上构建测试 Lync 部署;是的,我知道这不受支持,因此是“测试”。
Lync 前端服务器公开了两组 Web 服务,一组用于内部用户,一组用于外部用户;他们侦听同一服务器上的不同端口(443 和 4443);发布外部服务时,您需要反向代理或端口转发,以便将公共 IP 地址的端口 443 映射到前端服务器的端口 4443。当池中有多个前端服务器时,您还需要对它们进行负载平衡。
因此,典型的 Lync 部署如下所示:
Internal users
|
443
|
Internal LB
192.168.0.20
/ \
/ \
443 443
| |
Lync FE 1 Lync FE 2
192.168.0.21 192.168.0.22
| |
4443 4443
\ /
\ /
External LB
Public IP Address
|
443
|
External Users
这应该很容易在 Azure 中复制,因为它支持外部负载平衡(配置方法)和内部负载平衡(配置方法)。它们甚至在同一个云服务中同时受到支持,因此这种配置应该很容易。但是,看起来“应该”是这里的关键字。
创建外部负载平衡端点(侦听外部端口 443 并转发到服务器上的端口 4443)后,我正在尝试创建内部负载平衡器并将内部端点添加到 is; 但是,虽然 ILB 可以成功创建,但添加一个内部端点侦听端口 443 并转发到服务器上的端口 443 却惨遭失败,并显示端口 443 已被另一个端点使用的错误:
Update-AzureVM : BadRequest : Port 443 is already in use by one of the endpoints
in this deployment. Ensure that the port numbers are unique across endpoints
within a deployment.
作为参考,我的命令是:
Add-AzureInternalLoadBalancer -InternalLoadBalancerName "LyncILB" -ServiceName "LyncFrontEnd" -SubnetName "LabSubnet" -StaticVNetIPAddress 192.168.0.20
(这成功完成)
Get-AzureVM LYNCFE1 | Add-AzureEndpoint -Name "Https-Int" -Protocol "tcp" -LocalPort 443 -PublicPort 443 -LBSetName "HttpsIntLB" -DefaultProbe -InternalLoadBalancerName "LyncILB"
(这失败了)
现有的外部端点配置如下:
Get-AzureVM LYNCFE1 | get-azureendpoint
LBSetName : HttpsExtLB
LocalPort : 4443
Name : HTTPS-Ext
Port : 443
Protocol : tcp
Vip :
ProbePath :
ProbePort : 4443
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes :
LoadBalancerDistribution :
这个错误甚至没有多大意义。外部负载均衡器侦听公共 IP 地址,而内部负载均衡器侦听内部网络中的私有 IP 地址;这里不应该有任何冲突......但是看起来有一个。
为什么这不起作用?是我做错了什么,还是 Azure 网络又像往常一样愚蠢?
这个问题现在没有实际意义,因为 Azure 现在允许(并且已经允许一段时间)使用内部和公共负载均衡器从相同的 VM 公开相同的服务。
为什么需要使用两个完全不同的对象来完成完全相同的工作,只是前端 IP 地址不同,这仍然是一个谜。但至少,你现在可以。
刚刚在不同的部署中遇到了同样的问题。问题是您不能使用相同的后端 IP 池在相同的端口和协议上配置多个 LB 规则。
要实现您想要的,您需要向机器添加额外的 NIC,并将不同的 IP 用于内部与外部平衡规则。或者,您可以为机器提供公共 IP 并在外部对它们进行负载平衡(但是,您将机器暴露在互联网上,通常是不可取的)。
希望有帮助!