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

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

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

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

#1 楼

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

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

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

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

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

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

评论


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

–优素福
13-10-3在6:14

#2 楼

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

Fortate FortiOS允许创建虚拟服务器,该虚拟服务器与具有各自主机头的真实服务器绑定在一起组态。如果有任何请求与您的虚拟服务器的VIP匹配,则负载平衡请求将仅发送到与host header匹配的真实服务器。很好地解释您的症状的最重要部分是,其中一台Real Server可以省略主机头,因此它可以与任何主机头匹配。

没有主机头的Real Server可能已配置为

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

config firewall vip
 edit "http-host-ldb"
  set type server-load-balance
  set extip 192.0.2.1
  set extintf "lan"
  set server-type http
  set ldb-method http-host
  set extport 80
  config realservers
    edit 1
      set http-host "www.example.com"
      set ip 192.168.2.1
      set port 80
      next
    edit 2
      set http-host "www.example.com"
      set ip 192.168.2.2
      set port 80
      next
    edit 3
      set ip 192.168.2.3
      set port 80
      next
    end
 end


我想防火墙负载-平衡可能是由重定向本身完成的,但我们无法通过提供的有限信息来判断。

评论


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

–瑞奇
2013年9月3日21:59

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

– YLearn♦
2013年9月4日在2:59

@RickyBeam,只有第一个到rservers的主机名称匹配。最后一个服务器将匹配VIP地址作为主机。

–generalnetworkerror
2013年9月5日在7:30

@YLearn,我同意这很奇怪;我说的是rserver,而不是LB,将完成302,并且将bee配置为这样做。我知道没有LB会做到这一点。

–generalnetworkerror
2013年9月5日在7:33