几台服务器可以在一个IP上响应吗?

设想一个面向互联网的负载均衡器,将请求分派到本地networking中的多个工作服务器。

有没有办法让工作服务器直接对原始套接字/连接/ IP做出响应, 还是需要响应负载平衡器来转发响应(使其成为SPOF )?

通常,对负载平衡请求的响应将直接进入网关,而不是回到负载平衡器。

所以负载平衡器是入站请求的SPOF,但是因为出站请求直接进入网关,所以它可以绕过这个SPOF–尽pipe因为ACK需要通过负载平衡器回来,所以它仍然是毫无意义的。

通常你会有两个负载平衡器。 他们中只有一个在任何时候都拥有公共IP地址,并且在他们之间运行一个心跳。 活动负载平衡器一旦失去心跳(即崩溃,离线等),则第二个负载平衡器接pipeIP地址。

有一些负载均衡器可以通过使用目标NAT来透明地进行负载均衡,但是负载均衡器仍然需要查看返回stream量以将其NAT转换回客户端打开连接的原始IP。 如果我在10.10.10.10打开了一个到负载均衡器的连接,并且池中的一个服务器从它的IP 192.168.100.100发送了一个回复,我将丢弃那个数据包,因为我不知道192.168.100.100是谁。 我想和10.10.10.10交谈。

您可以通过与VRRPbuild立双栈来避免负载均衡器中的单点故障,这样,如果单个负载均衡器发生故障,另一个负载均衡器将接pipe所有stream量。 VRRP使用共享MAC地址和IP地址来实现无缝故障转移。

IPnetworking不允许直接访问,您需要一些软件来帮助您,以便一个工作服务器作为负载平衡器,如果失败,另一个自动接pipe负载平衡责任并开始处理负载平衡器IP地址的请求。 所以他们都必须运行负载平衡软件。 你应该可以用HAProxy软件来做到这一点。 你可以谷歌的“共享IP”来推动你的研究。 这个解决scheme自然会减less一个工作服务器的服务容量,因为它必须作为整个集群的负载均衡器。

顺便说一句 你可能会在ServerFault中得到更多的答案。

这取决于您正在使用的负载平衡的方法。 如果您只是简单地使用循环DNS,那么您的工作服务器就会直接与客户build立连接。

如果您实际使用的是反向代理(如HAProxy),则不会。 您的工作服务器将使用负载均衡器作为中介。 从工作服务器的angular度来看,客户端是负载均衡器,而不是实际的客户端。

如果您担心以这种方式使用反向代理创build单点故障,则可以使用策略来缓解某些风险,例如使用冗余代理。 细节将根据您的实施而有所不同。

您可以将多个服务器的环回地址设置为相同(称为别名)。 这个IP被外界所知。 请求将以此IP作为目标IP地址。 负载平衡器可以根据负载平衡标准来引导请求,并将请求指向这些服务器之一。

所以,你可以有几个服务器可以响应一个IP的情况。