HTTP/1.0 302 Redirect Server: Stronghold/2.4.2 Apache/1.3.6 Location: http://161.58.228.45/hammers.html
现在,在图c中,浏览器会用重定向URL重新发送请求,这次会发送给主机161.58.228.45
GET /hammers.html HTTP/1.0 Host: 161.58.228.45 User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)
另一个客户端可能会被重定向到另一台服务器上去。在图d-f中,Bob的请求会被重定向到161.58.228.46
HTTP重定向可以在服务器间导引请求,但它有以下几个缺点:需要原始服务器进行大量处理来判断要重定向到哪台服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样;增加了用户时延,因为访问页面时要进行两次往返;如果重定向服务器出故障,站点就会瘫痪
由于存在这些弱点,HTTP重定向通常都会与其他一种或多种重定向技术结合使用
【DNS重定向】
每次客户端试图访问Joe的五金商店的网站时,都必须将域名解析为IP地址。DNS解析程序可能是客户端自己的操作系统,可能是客户端网络中的一台DNS服务器,或者是一台远距离的DNS服务器
DNS允许将几个IP地址关联到一个域中,可以配置DNS解析程序,或对其进行编程,以返回可变的IP地址。解析程序返回IP地址时所基于的原则可以很简单(轮转),也可以很复杂(比如查看几台服务器上的负载,并返回负载最轻的服务器的IP地址)
在下图中,Joe为运行了4台服务器。DNS服务器要决定为返回4个IP地址中的哪一个。最简单的DNS决策算法就是轮转
1、DNS轮转
DNS轮转是最常见的重定向技术之一也是最简单的重定向技术之一。DNS轮转使用了DNS主机名解析中的一项特性,在Web服务器集群中平衡负载。这是一种单纯的负载均衡策略,没有考虑任何与客户端和服务器的相对位置,或者服务器当前负载有关的因素
我们来看看CNN.com实际上都做了些什么。我们用Unix中的工具nslookup来查找与CNN.com相关的IP地址。下面给出了结果
% nslookup Name: cnn.com Addresses: 207.25.71.9, 207.25.71.12, 207.25.71.20, 207.25.71.22, 207.25.71.23, 207.25.71.24, 207.25.71.25, 207.25.71.26, 207.25.71.27, 207.25.71.28, 207.25.71.29, 207.25.71.30, 207.25.71.82, 207.25.71.199, 207.25.71.245, 207.25.71.246 Aliases:
网站实际上是20个不同的IP地址组成的集群。每个IP地址通常都意味着一台不同的物理服务器
2、多个地址及轮转地址的循环
大多数DNS客户端只会使用多地址集中的第一个地址。为了均衡负载,大多数DNS服务器都会在每次完成查询之后对地址进行轮转。这种地址轮转通常称作DNS轮转
例如,对进行三次连续的DNS查找可能会返回下面给出的IP地址轮转列表
第一次DNS查找时的第一个地址为207.25.71.5;第二次DNS查找时的第一个地址为207.25.71.6;第三次DNS查找时的第一个地址为207.25.71.7
3、用来平衡负载的DNS轮转
由于大多数DNS客户端只使用第一个地址,所以DNS轮转可以在多台服务器间提供负载均衡。如果DNS没有对地址进行轮转,��部分客户端就总是会将负载发送给第一台服务器
下图说明了DNS轮转循环是如何平衡负载的
Alice试图连接时,会用DNS查找IP地址,得到207.25.71.5作 为第一个1P地址。在图c中,Alice连接到Web服务器207.25.71.5