我们有一组负载平衡(使用微软 NLBv6.1) 带有 IIS7 的 Windows 服务器 (Windows Server 2008 R2),托管一系列 Web 应用程序。这些 Web 应用程序向外部 Web 服务发出大量 Web 服务请求,这很好。
我们发现这些 Web 应用程序在与自身通信时存在问题。假设我们有一个 Web 应用程序https://app.example.com/
与 进行通信https://api.example.com/
(请注意使用 SSL,我认为这使问题更加严重)。app
和都api
运行在相同的物理 Web 服务器上,在相同的物理负载平衡器下进行负载平衡。
由于某种原因,这种“循环”通信不起作用。我们从 ISP 那里得到了一个我不太明白的解释,但其中包括“IP 堆栈对哪个服务器将获得给定请求的 IP 响应感到困惑”。
这个问题有人在任何地方都解决过吗?我们不想以任何外部合作伙伴无法与其通信的方式与我们自己的 Web 服务通信。我们希望使用相同的 SSL 证书、相同的 URL 和相同的 IP 地址。这可能吗?
答案1
这是一个常见问题。基本上,问题(据我理解)是负载平衡器不喜欢连接通过同一端口进入,然后从同一端口退出。
使用物理 Cisco 负载均衡器时,我能够通过使用一些相当复杂的网络设计来解决这个问题。不确定使用 NLB 时如何做同样的事情。