负载平衡 – websockets,负载均衡器和64k端口

使用websockets和持久TCP连接如果负载均衡器处理后端的大型服务器场,负载均衡器如何应对64k端口限制?需要.有些人可以设置应用程序的infra.可能有100k连接.
最佳答案
您的问题似乎假设SNAT(aka NAPT)翻译负载均衡器.这里有一些关于解决64k临时端口问题的想法.我的经验是F5 Networks的BIG-IP产品(所以链接到他们的网站),但其他供应商的概念是相同的:

>不要SNAT.如果源端口未翻译,则不会有64k限制.要关闭SNAT,您需要将负载均衡器的内部地址设置为内部服务器上的路由(通常是默认路由).
> Use a SNAT Pool.这使得负载均衡器可用的内部IP地址池可以转换为.例如,SNAT池中的两个IP地址将为您提供128k临时端口,因此可以同时进行128k个TCP连接.

更先进的方法:

> Use “n-Path Routing”(这是F5的术语,其他人可称之为“直接服务器返回”).这不会转换客户端地址或端口(或目标IP,就此而言!),因此也会使短暂的端口问题消失.来自服务器的响应绕过负载均衡器.实现这一目标的方法是在所有服务器上托管相同IP的环回适配器,以便它们接受流量.

我应该指出,对于传统的HTTP负载平衡器来说,Websockets是一个特殊的挑战,因为连接的存活时间要长得多 – 人们确实遇到了以前可能永远不会遇到的短暂端口问题.在我看来,最好的解决方案是消除SNAT要求(上面的第一个或第三个解决方案).缩放得到很大改善,负载平衡器上的负载也减少了.增加的复杂性是值得的.

这是一篇关于这个问题的好文章,来自F5的Lori MacVittie:HTML5 Web Sockets Changes the Scalability Game

转载注明原文:负载平衡 – websockets,负载均衡器和64k端口 - 代码日志