DNS和IP之间的负载平衡差异-转发与重定向


9

我遇到了我无法理解的情况。我们有一个Fortigate防火墙,已启用该防火墙以在两个后端Apache Web服务器之间进行负载平衡。然后,DNS名称将映射到负载均衡器上的虚拟IP。

不出所料,当您浏览到DNS名称/ URL(例如www.something.com)时,负载均衡器会从一台后端Apache Web服务器提供一个页面。浏览器中的URL仍为 www.something.com。据我了解,这种情况下的负载均衡器只是在浏览器和Apache之间转发数据包,而始终保持在路径内。

但是,如果我浏览到DNS映射到的IP地址,则负载均衡器将返回HTTP 302 Found,并将Location标头设置为其中一个Apache的DNS URL。浏览器中的URL更改为后端服务器DNS。

为什么通过IP查询时负载均衡器重定向,但通过DNS名称查询时正确转发路径内。

Answers:


10

我没有使用Fortigate FW进行负载平衡,因此我将更笼统地回答一些问题。

首先,关于您的问题,负载均衡器的运行完全符合预期,我认为您的服务器可能未正确配置为响应其IP地址上的请求。如果要在负载平衡之后进行测试,则可以在服务器的防火墙后面的本地客户端的hosts文件中设置域名,并使用域名和内部IP对其进行访问。您可能会得到与现在看到的相同的结果。

我的猜测是,您已打开虚拟主机(以在单个服务器上支持多个域),并且“默认”不为您的域提供相同的页面。在两种情况下,您都将从服务器获取网页。如果需要有关配置Web服务器的帮助,则可能需要尝试ServerFault

第二,进入更多细节。负载均衡器通常至少在HTTP和HTTPS集群的L7上运行。这意味着他们不仅会查看IP地址并将其转发,也不会“重定向”页面。

当他们收到请求时,他们实际上是解析请求,并在处理了请求后将其转发到服务器。此时,他们可以执行许多操作,例如双向重写标头,可能向返回客户端的数据中添加cookie(以实现持久性),终止SSL会话,基于URL的匹配等。

我建议您花一些时间完整阅读供应商文档,以更好地了解负载平衡的工作原理(使用Fortigate,您可以阅读他们的资料和Coyote Point,后者是Fortigate收购的另一家负载平衡公司)。理解它在做什么将在这种情况下为您提供帮助,并使您能够解锁那些尚未意识到的功能。


问题是后端Apache Web服务器上的配置。需要将新的DNS名称添加为别名。
优素福(Yusuf)

3

在阅读《Fortigate负载平衡》文档中的基于HTTP主机的负载平衡之后,我可以看到您如何拥有一个非典型的负载平衡配置,该配置可能会导致您所描述的。但是,如果没有您的配置,我们无法确定是否适合您。

Fortigate FortiOS允许创建与真实服务器绑定的虚拟服务器,每个真实服务器具有不同的主机头配置。如果任何请求与您的虚拟服务器的VIP相匹配,则负载平衡的请求将仅发送至与该虚拟服务器相匹配的Real Server host header很好地解释您的症状的最重要部分是,其中一台Real Server可以省略主机头,以便它与任何主机头匹配。

没有主机标头的Real Server可能已配置为某种类型的“全部捕获”,落在执行重定向的站点上。

使用下面的示例,只有第一个和第二个rserver通过主机标头处理与您首选的DNS名称匹配的流量,但是第三个rserver接受与所有其他主机标头匹配的信息,包括DNS VIP本身,并将其发送到可以进行重定向的站点。

配置防火墙VIP
 编辑“ http-host-ldb”
  设置类型服务器负载平衡
  设置extip 192.0.2.1
  设置extintf“ lan”
  设置服务器类型http
  设置ldb方法http-host
  设置extport 80
  配置realservers
    编辑1
      设置http主机“ www.example.com”
      设置IP 192.168.2.1
      设置端口80
      下一个
    编辑2
      设置http主机“ www.example.com”
      设置IP 192.168.2.2
      设置端口80
      下一个
    编辑3
      设置IP 192.168.2.3
      设置端口80
      下一个
    结束
 结束

我想防火墙负载平衡本身可以做重定向,但是我们不能通过提供的有限信息来判断。


在此配置中,将其设置为基于名称的匹配。这就是问题所在。如果按地址访问VIP,它将不知道如何处理。(然后将应用正常的NAT规则)
Ricky Beam

我不相信这是答案的主要原因是,据我所知,没有FW /负载平衡器会返回位置设置为内部资源的主机名/域的302(至少在没有专门配置的情况下)因此,根据问题听起来似乎并非如此)。
YLearn

@RickyBeam,只有第一个rservers会进行主机名匹配。最后一个服务器将匹配VIP地址作为主机。
generalnetworkerror 2013年

@YLearn,我同意这很奇怪;我说的是rserver,而不是LB,将完成302,并且将bee配置为这样做。我知道没有LB会做到这一点。
generalnetworkerror 2013年
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.