负载均衡器返回什么?


12

当用户点击负载均衡器并且负载均衡器确定要转发到哪个Web服务器时,接下来会发生什么?负载平衡器是否将请求及其所有数据转发到Web服务器,是否接收Web服务器的响应并将其返回给用户?

还是更像是重定向,负载平衡器实际上只是将所选服务器的IP地址返回给浏览器,而浏览器必须打开与给定服务器的新连接?

我的直觉是说不会是后者,因为那意味着所有Web服务器IP地址都是公开的,而且我认为出于安全原因,最好只将负载平衡器地址公开给公众。但是,我又不确定,因为如果您SSL termination在负载均衡器上启用,是否不需要通过重定向服务器重新建立SSL?


Answers:


13

最终IP未发布。该过程实际上以客户端(用户击中平衡器)认为自己在与实际节点通信时正在与平衡器进行通信的方式工作。

在一个非常简单的解释中,大多数事务的工作方式如下:

  1. 用户向负载均衡器发出请求。
  2. 平衡器决定哪个节点最合适(根据您用于平衡的策略),然后选择(更改)目标IP。
  3. (这就是发生魔术的地方。)节点接收请求,接受连接,然后响应平衡器。
  4. 平衡器将响应IP更改回虚拟IP,即平衡器之一,并将响应转发给用户。
  5. Voilà,即使实际已在其他地方处理用户,用户也会收到带有初始请求IP的响应。

请记住,数据包重写(在步骤4中更改IP地址)非常重要。如果没有它,客户端从它不信任的IP接收数据包,只会丢弃响应。


4

阶梯式平衡器在第4层OSI上工作。它解封数据包直到端口号,然后以3种模式之一引导数据包。

负载均衡器可以在3种模式下工作: 1.直接路由 在这种模式下,您的realserver使用IP public。平衡器接收数据包并解封装,直到第4层。如果在负载平衡规则中匹配,它将被重定向数据包(无需修改)到realserver之一。Realserver的别名地址与负载均衡地址相同,因此,当realserver接收目标地址为xxx.xxx.xxx.xxx的数据包时,它将在其地址(别名)中定义该数据包。然后真实服务器直接将请求回复给客户端(而不是通过负载平衡)。

2. NAT 在此模式下,数据包重定向到具有更改目标地址的realserver。目标地址将替换为realserver地址(NAT)。在这种模式下,您的realserver不需要IP公用,它可以使用您的本地网络。然后数据包将被传递没有新的目标地址。当realserver收到数据包时,它将通过网关(负载平衡)回复客户端请求地址。在这种模式下,您的负载平衡将用作路由器和Realserver的网关。

3.隧道 在此模式下,数据包将使用新的src-dst地址(例如vpn)进行隧道传输,以将数据包传递到realserver。当在realserver中接收到数据包时,realserver将通过隧道管道回复到负载平衡。然后负载均衡传递应答ti真实请求的源地址。

对于HTTPS / SSL,负载均衡不会对其进行处理,直到第四层OSI才进行负载均衡。上面的第5层将在realserver中处理。因此,TCP 3方式hanshake,SSL / HTTPS在realserver中进行。负载均衡仅是包的导向器。

我希望我的解释会有所帮助。


看来您在这里谈论的是lvs,但这并不一定是http(s)负载平衡的工作方式。例如看一下haproxy。此应用程序确实在用户空间中实现了负载平衡,并且还提供了不错的后端路由功能。
Friek

在我的数据中心中,我使用lvs来实现我的https应用服务的负载平衡,并且它可以正常运行。
dek.tiram

请原谅我的无知,但是“ lvs”是什么?它是haproxy的竞争对手吗?
smaili

Haproxy也使用lvs。我使用食人鱼,它也将lvs用于核心过程。
dek.tiram

haproxy是一个独立的应用程序,根本不需要lvs(甚至不知道lvs的存在)。如果haproxy的负载过重,则可以使用lvs平衡haproxy节点的群集。
Friek

-1

负载均衡器可以是路由器或反向代理:

LVS是Linux内核的行业标准第4层(基于路由)负载平衡模块。它被用于各种商业负载平衡器中,包括梭子鱼,Loadbalancer.org和Kemp Technologies。梭子鱼和Loadbalancer.org还使用HAProxy进行第7层负载平衡(基于反向代理)。

附言 我忘记了这并没有显示我来自哪里,显然是Loadbalancer.org


1
当发布指向外部资源的链接时,可能会透露其隶属关系,请参阅如何成为垃圾邮件发送者
gna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.