为NAT之后的客户端提供有效的负载平衡

我们有一个networking应用程序运行在一个web服务器的云。 在晚上,Web应用程序主要来自我们的本地办公室,它使用NAT将多台机器连接到互联网。 请求web应用程序从客户端PC通过NAT,通过互联网,通过负载均衡器,然后到达云中的节点。 负载均衡器使用源IP持久性。 下面简单说明是我们的情况。

云< – >负载均衡器< – > INTERNET < – > NAT < – > 20个客户端

由于LB使用源IP持久性,来自所有客户端的所有Web请求都会击中云中的同一个节点。 这当然是由于NAT,它确保每个TCP / IP数据包都包含相同的源IP。

因为所有的请求都会碰到云中的同一个节点,所以节点通常会产生一个503错误: http : //www.checkupdown.com/status/E503.html ,因为节点被连接超载。

这个问题最好的解决scheme是什么? 请注意,我们无法控制云中的负载均衡器和节点。 我们只有shell权限才能上传我们的Web应用程序的文件。

  1. 在我们当地的办事处安装一个可以处理20个客户端的Web服务器? (我们实际上不想做服务器维护。)
  2. 将每个客户连接到广域网,使每个客户都有自己的IP地址? (对于IPv4来说不安全和不可行,也许在IPv6中是可行的。)
  3. 查看我们的虚拟主机是否可以configuration负载平衡器使用基于DNS的负载平衡? (这是否能解决我们的问题?DNScaching在哪里?)
  4. 看看我们的networking主机可以configuration负载平衡器使用HTTP cookie进行负载平衡吗? (如果节点具有静态IP地址,可能是最好的解决scheme。)
  5. 另一个解决scheme在一起

选项4是“最简单的”,因为它意味着(1)没有新的服务器和(2)networking上没有IP重新configuration。

DNS可以工作(你正在谈论DNS循环,对吗?),但可能比基于cookie的负载平衡更多的工作。 我会和你的主持人谈一谈。

另一种方法是在您的防火墙上设置多NAT,以便您的内部客户端分布在几个外部IP上。 从概念上讲,您可以将其视为反向负载平衡器。


但是,您的客户号码是否准确? 20客户端超载您的networking应用程序 也许你应该解决你的应用程序无法处理那么多客户端的问题。 不知道你的应用程序的任何东西,20似乎相当低。 但是我可能是错的。 🙂


第三个select:你的应用程序需要粘性吗? 如果您的客户端可以毫无问题地从Web服务器跳转到Web服务器,那么忘记每个IP负载平衡,并按照每个连接循环或每个连接进行最less的连接。