负载平衡器在客户端和服务器之间没有网桥

我在这里先问这个问题。最后我build议在这里问一下。

我正在开发一个服务器端软件,它使用ASIO进行客户端和服务器之间的TCP套接字通信。 所有这些都是用C ++来完成的,因为这个软件是用来实现极快的低延迟数据传输的。我需要能够在服务器的不同实例(进程)之间分配传入的客户端连接。 于是我学到了一个新的术语 – 负载平衡器 。 现在,因为我使用C ++和ASIO,我开始寻找可用的开源库。 我find了 我所理解的是,这是一个代理服务器,调解客户端和服务器之间的连接。 那就是它保持了两者之间的桥梁。

我有以下问题:

所有的代理服务器都是这样工作吗?

是否有可能build立一个代理服务器(或负载平衡器),只有在主动连接期间,不将服务器实例redirect到服务器实例,而不用作开放套接字stream量的介质?

再次,我最终想要的是,我的负载均衡器从客户端获得连接请求,然后“告诉”我的服务器获取该连接信息(例如IP地址),然后继续直接连接服务器和客户端。

“正常”负载均衡器/ ADC(F5 BIG-IP,Citrix Netscaler等)将代理连接。

你想要的是GSLB(或类似的)基于DNS的负载平衡技术(不是DNS循环)。 我知道F5和A10都有GSLB的实现,我相信还有很多其他的。

它基本上是如何工作的,你将有一个工作的盒子,监视服务器,并用客户端应该去的服务器的IP来响应来自客户端的DNS查询。 你将拥有正常的内部(或外部)DNS,但是你有一些DNS范围被划分到GSLB框中。

在function上,客户端将尝试按名称连接,它将查询您的DNS服务器,它将发送客户端到GSLB框来获得答案。 GSLB框会用它认为最适合的服务器来响应DNS查询(或者在下一行,或者你已经configuration好了)。 客户端将继续为该logging的TTL命中相同的IP,届时将重新查询GSLB框。

在这方面,负载平衡不在客户端和服务器之间,它只是告诉客户去哪里。 客户端或服务器都不需要任何关于此事的知识。 就客户而言,这只是一个DNS查询,并不需要知道这是一个有条件的查询。