第20章 重定向与负载均衡

1 重定向协议
1.1 报文->(重定向)->服务器
  • 1 HTTP重定向:客户端访问A,A发回一条到B的HTTP重定向,客户端重新请求B
    • 服务端发回302 Redirect 响应
  • 2 DNS重定向:nslookup命令返回的多个IP地址,每次顺序都不同
    • DNS轮转,每次nslookup返回的IP顺序不同
    • 基于DNS的重定向算法:负载均衡算法;邻接路由算法;故障屏蔽算法。
  • 3 任播寻址:几台服务器共享IP,每台服务器伪装成骨干路由器,其它路由器共享IP地址分组并发给最近的路由器(服务器)
  • 4 IP MAC转发:交换机来做,服务器或代理的跳距必须是1
  • 5 IP地址转发:第4层交换机评估分组目的端口并重定向分组的IP地址到代理/镜像服务器
    • 对称路由:从客户端接受输入TCP连接的交换机管理连接,交换机必须通过该连接将响应回送给客户端
    • 完全NAT:交换机将分组的源IP改成交换机的IP地址
    • 半NAT:
    • NECT:Network Elemnent  Control Protocol 网元控制协议,允许网元与服务器元素进行交互。
1.2 报文->(重定向)->代理服务器
  • 1 显式浏览器配置:配置浏览器,使其将报文发给附近的一个代理/缓存
  • 2 代理自动配置PAC:Web浏览器从配置服务器解析PAC文件,其告诉浏览器每个URL使用什么代理
    • 目前一些主要ISP都在使用PAC
  • 3 Wep Proxy代理自动发现协议WPAD:Web浏览器向配置服务器查询一个PAC文件的URL,目的是自动发现附近的代理服务器。
  • 4 Web缓存协调协议WCCP:路由器评估分组目的地址,用代理/镜像服务器IP地址将重定向分组封装起来
  • 5 因特网缓存协议ICP:代理缓存会在一组兄弟代理缓存中查询请求内容
  • 6 缓存分组路由协议CARP:代理缓存散列协议,允许缓存将请求发给父缓存。
  • 7 超文本缓存协议HTCP:代理缓存可以向一组兄弟缓存查询请求的内容。
2 WPAD 代理自动发现协议
2.1 PAC文件
  • WPAD不能直接确定代理服务器的名字,而是发现PAC文件其中的URL,称为CURL。
  • 根据这个CURL,获取PAC文件;
  • PAC文件执行javascrpt程序,返回合适的代理服务器地址。
2.2 WPAD算法

WPAD使用了一系列资源发现技术确定适当的PAC文件的CURL,按照以下技术依次尝试发现:

  1. DHCP 动态主机配置协议
  2. SLP 服务定位协议
  3. DNS 知名主机名
  4. DNS SRV 记录
  5. DNS TXT记录中提供的服务URL

强制要求WPAD客户端支持DHCP和DNS两种技术。

客户端会在DNS SRV、知名主机、DNS TXT记录等方法中循环多次。每次查询的名字QNAME越来越不具体,提高发现几率。

2.3 获取PAC文件

客户端向CURL发送GET请求,请求的Accept首部必须CFILE格式,比如:

Accept:application/x-ns-proxy-autoconfig

以下情况进行WPAD:

  • 客户端启动时
  • 收到来自网络栈的通知
3 缓存重定向 WCCP

Cisco公司开发,负责路由器和缓存服务器之间的通信,使路由器将WEB流量重定向到代理缓存中去。

3.1 工作过程
  1. 启动网络,含有WCCP服务组,即一组路由器+目标缓存;
  2. 如果服务器配置为重定向HTTP流量,服务组中的路由器就将HTTP请求发送给服务组中的缓存;
  3. HTTP请求抵达服务组中的路由时,路由器会选择服务组中的某个缓存提供服务;
  4. 路由器向该缓存发起请求,可用缓存的IP地址来封装分组,也可通过IP MAC转发来实现;
  5. 服务组成员间交互心跳报文,如果某缓存不能提供服务,则将分组返回给路由器进行普通的转发。
3.2 WCCP2报文

分类:

  • WCCP2_HERE_I_AM:缓存->路由器,告诉路由器我在这儿~
  • WCCP2_I_SEE_YOU:路由器->缓存,针对WCCP2_HERE_I_AM报文的响应
  • WCCP2_REDIRECT_ASSIGN:指定的缓存->路由器,为负载均衡分配任务
  • WCCP2_REMOVAL_QUERY:路由器->坏缓存(2.5xWCCP2_HERE_I_AM秒内没有发送过WCCP2_HERE_I_AM报文的缓存)

组成:

  • 首部
  • 一些组件
3.3 分组封装

WCCP路由器会用服务器IP将HTTP分组封装起来,将其重定向到特定的服务器上去。封装中有IP首部的proto字段,用来说明通用路由器封装GRE。

proto告诉接收代理,它有封装分组,里面有原始的客户端IP。

3.4 负载均衡

WCCP路由器和接收服务器交换心跳报文heartbeat message,如果某特定接受服务器停发,则路由器将请求流量直接发送到因特网上。

4 因特网缓存协议 ICP

允许缓存在其兄弟缓存中查找命中内容

可视作一个缓存集群协议,HTTP请求报文最终目的地可通过一系列ICP查询确定,因此是重定向

过程:

  1. ICP同时询问附近多个缓存,看其是否有特定的URL,
  2. 附近缓存有返回一个简短报文HIT,没有返回MISS;
  3. 当前缓存打开一条到拥有此对象的邻居缓存的HTTP连接
5 缓存阵列路由协议 CARP

为了降低代理服务器自身的超载,CARP管理一组代理服务器

与ICP不同的是,ICP不同代理服务器之间是镜像关系,完全复制;而CARP每个组件服务器只包含缓存文档的一部分,通过对某个Web对象URL散列,将该对象映射到特定代理服务器。

过程:

  1. 保存一个活跃的CARP代理服务器列表,并周期检查;
  2. 为每个代理服务器计算一个散列函数,返回值考虑了此代理负载量;
  3. 定义一个独立的URL散列函数,根据请求对象URL返回一个数字;
  4. 将URL散列函数结果存入代理服务器散列函数,得到一个数字阵列。这些数字中最大值表示为该URL提供服务的代理服务器。

特点:

  1. 避免了重复存储
  2. 任一代理故障,都要重写现存代理的部分缓存内容
6 超文本缓存协议 HTCP

ICP的更新版,运行兄弟缓存间相互查询,还允许兄弟缓存监视或请求对方缓存中变动的文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值