重定向与负载均衡

1、什么是重定向

重定向技术通常可以用来确定报文是否终结于某个代理,缓存或服务器集群中某台特定的服务器. —— HTTP权威指南

感觉很绕口,举个栗子🌰🙋‍简单理解起来相当于你拿着一个地址从家里出发(浏览器发送请求)去找一个亲戚,到了后发现他已经搬家了,邻居告诉了你一个新的地址(新的请求),此时天已经晚了,你回家休息一晚上(又回到了浏览器),第二天拿着新的地址去找(浏览器再次发送请求),终于找到了。

整个过程,家可以看成浏览器,两个不同的地址可以看成两次不同的request,两个地址都是从家里开始出发,相当于浏览器发送两次不同的请求,先找到旧url,没找到,再回到浏览器去找新url,最终跳转到新的url上,这就是url发生改变的原因。

带入到 HTTP 中,服务器可以通过返回一个重定向响应来进行重定向。这个重定向响应有一个以 3 开头的状态码 ,并且有一个 Location 头字段 表示要重定向到的位置。

Image.png

2、为什么要重定向

由于HTTP应用程序总是要做下列3件事情,所以现代网络中重定向时普遍存在的

  • 可靠的执行HTTP事务
  • 最小化时延
  • 节约网络带宽

出于这些原因,Web内容通常分布在很多地方。这样做是出于可靠性的考虑:

  • 如果一个位置出问题了,还有其他的可用;
  • 如果客户端能去访问较近的资源,就可以更快的收到所请求的内容,以降低响应时间
  • 将目标服务器分散,还可以减少网络拥塞

可以将重定向当作一组有助于找到“最佳”分布式内容的技术。

3、通用的重定向方法

http重定向

web服务器可以将短的重定向报文发回给客户端,与其他形式相比,http重定向的优点之一就是重定向服务器知道客户端的IP地址,从理论上来讲他可以做出更合理的选择;

Image [2].png

http重定向的局限

  • 需要原始服务器进行大量处理来判断要重定向到哪条服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样。
  • 增加了用户时延,因为访问页面时要进行两次往返
  • 如果重定向服务器出故障,站点就会瘫痪。

DNS重定向

DNS重定向,有时称为DNS劫持,是从DNS服务器转移结果的做法。下图中,DNS服务器要决定为www.joes.hardware.com返回4个IP地址中的哪一个;

Image [3].png

其中DNS服务器决定要选择使用那个IP,最简单的决策算法就是轮转。DNS轮转使用了DNS主机名解析中的一项特性,在Web服务器集群中平衡负载。

DNS重定向算法:

  • 轮转
  • 负载均衡算法
  • 邻接路由算法
  • 故障屏蔽算法

任播寻址

几台服务器使用相同的IP地址。每台服务器都会伪装成一个骨干路由器。其他路由器会将共享的IP地址分组发送给最近的服务器。

Image [4].png

任播寻址的局限

  • 需要拥有/配置路由器
  • 有地址冲突的风险,如果路由变化了,与已建立的TCP连接相关的分组会被发送到其他的服务区,可能会使Tcp连接中断

IP/MAC 转发

在以太网中,HTTP 报文都是以携带地址的数据分组的形式发送的。每个分组都有一个第四层地址,由源 IP 地址、目的 IP 地址以及 TCP 端口号组成,它是第四层设备所关注的地址。

每个分组还有一个第二层地址,MAC(Media Access Control,媒体访问控制)地址,这是第二层设备(通常是交换机和 Hub)所关注的地址。第二层设备的任务是接收具有特定输入 MAC 地址的分组,然后将其转发到特定的输出 MAC 地址上去。

IP 地址转发

在 IP 地址转发中,交换机或其他第四层设备会检测输入分组中的 TCP/IP 地址,并通过修改目的 IP 地址(不是目的 MAC 地址),对分组进行相应的转发。

与 MAC 转 发相比,这么做的优点是目标服务器不需要位于一跳远的地方;只需要位于交换机的上游就行了,而且通常第三层的端到端因特网路由都会将分组传送到正确的地方。这种类型的转发也被称为 NAT(Network Address Translation,网络地址转换)。

Image [13].png

Posted on

2022-04-19

Updated on

2022-08-03

Licensed under

Kommentare

:D 一言句子获取中...

Loading...Wait a Minute!