我试图使用多个服务器来实现一个系统,这些服务器通过TCP与客户端进行通信。由于将有多个后端服务器来处理客户端的请求,我想知道是否存在负载平衡机制,在负载均衡器接收到客户端请求后,它将客户机直接连接到后端服务器,以便它们建立双向TCP连接,并且它们之间的所有未来通信都是直接在它们之间进行的,而不是通过负载平衡器进行的。
发布于 2019-07-09 05:12:11
一般来说,不,IP不允许这样做,单个连接不能传递给其他机器。协议不允许这样做。在高可用性的情况下,您可以将所有连接从一台计算机切换到另一台计算机,但即使这样做也是一种黑客行为,并且是使用MAC地址转移完成的。
您想要的可能是类似于HAProxy的东西,它是一个TCP/IP负载均衡器。处于中间状态并不是一个真正的问题,你不会觉得自己的表现受到了影响。
另一种方法是在应用层中做一些事情,您的“负载均衡器”告诉客户端要连接到哪个服务器,但实际上不进行连接。这是由客户端在次要请求中完成的。有时这是通过DNS,有时是通过时间限制的令牌,以确保客户端尊重路由.
https://stackoverflow.com/questions/56945499
复制相似问题