网络拥塞状况.提高用户访问网站的响应速度.从技术上全面解决由于
网络带宽小.用户访问量大.网点分布不均等原因.解决用户访问网站的响应速度慢的根本原因.
工作流程
(1)链路负载均衡设备 接收内网用户流量
(2)链路负载均衡设备根据目的IP来查找目的IP所属运营商
(3)链路负载均衡设备根据选定的运营商结果将流量转发给选定的链路
(4) 链路负载均衡设备接收外网用户流量
(5)链路负载均衡设备将流量转发给内网用户
Cluster A为防火墙负载均衡的集群,Cluster B为NAT方式服务器负载均衡的集群。综合组网的工作流程就是防火墙、服务器负载均衡流程的叠加。这样的组网方式既避免了防火墙成为网络中的瓶颈,也提高了各种网络服务(如HTTP、FTP)的性能和可用性。
基本元素
l LB device:负责将内网到外网流量分发到多条物理链路的设备。
l 物理链路:运营商提供的实际链路。
l DIP:用户发送报文的目的网段。
l 链路带宽:运营商提供给此链路的实际带宽。
l 链路阈值:流量超过此链路阈值时会进行相应带宽调度。
l 链路权重:多条链路在同一调度策略中,根据加权调度算法将目标流量根据权重比进行分发。
l 健康检查:检查运营商链路的质量。
l 所属运营商:确定此条链路所属哪个运营商。
l 路由模式:确定此条链路需要下发哪些路由。
l 目的IP组:确定去往此目的运营商IP所走的链路。
l 源地址组:确定哪些内网用户能匹配此条链路。
l 协议:确定哪些协议能匹配此条链路。
l 入接口:确定从哪些接口流入的流量能匹配此条链路。
l 策略动作:当所选物理链路都超阈值后,设备对超阈值流量的处理方式。
l 会话保持:匹配源目ip的同一会话在老化时间内走同一条链路。
l DNS透明代理:内网用户向外网域名请求时,设备将此报文拦截重新选择负载最小的链路转发。
CDN是个很庞大的概念和体系.全世界CDN服务提供商屈指可数.
我们熟悉的Google就是某CDN的最大客户.我们今天只选取其中一小部分来讨论.
说了半天.看上去似乎很复杂.鉴于经典的大多是搞WEB的.接触的最多的是
WEB服务器/数据库等.既然是浅谈.我就举个简单的例子.
例子
比如你弄一网站.假设你有能力购买2台服务器.作为WEB服务.暂时我们认为服务器本身不存在性能问题.一台托管在北方的
网通机房.一台托管在南方的电信机房.2台服务器内容互为同步.则通过智能的DNS解析设备.将网通的用户定位到北方网通的服务器上.将电信的用户定位到南方电信的服务器上.这.就是最基础的CDN.我的理解是 ---
广域网的负载均衡.
2台服务器放置问题我不想多谈.有钱就行.2台服务器内容同步的方式很多.我也不想多谈.今天主要是要谈一下.如何实现让网通的用户去访问放置在网通的服务器.电信的用户去访问放置在电信的服务器.
即如今很多服务提供商所谓的智能DNS解析.也就是互联网链路的负载均衡.
电信/网通.2条链路的负载均衡.我们先来谈谈这个.因为这个是访问者最直观的体验.
既然CDN的目的是为了提高用户访问网站的响应速度.最直接的方法就是做互联网链路的智能导向.
当然.CDN也涉及多台服务器负载均衡.应用的负载均衡.包括中间件的应用负载均衡.因为时间关系暂且不表.
当我们将 www.Blueidea.com 输入IE地址栏敲回车后.首先要去你的Local DNS做解析.什么是Local DNS?就是你本机网卡所设置的
DNS服务器.比如我的是: 202.96.128.68.如果Local DNS没有 www.Bluieidea.com 的Cache记录.则Local DNS会询问上级DNS服务器.注意.DNS的查询结构是树状的.最后查询的DNS为root.即为root DNS.或者称为根DNS.根DNS在全世界只有13台.中国境内没有.当root DNS接受到请求后.通过查询获得的结果一般是: Blueidea.com这个域的解析服务器为ns1.chinadns.com.要求你去询问ns1.chinadns.com去做解析.ns1.chinadns.com是哪里来的?当然是你申请注册域名的机构自己的DNS服务器.也就是你Blueidea.com这个域名的隶属DNS.隶属DNS获得了你域名解析的请求.则查询A记录.返回Blueidea.com的IP地址给最初的PC Client端.完成了一次域名解析为IP地址的全部过程.
虽然很绕.但是如果能搞明白.那才能理解下面的关于智能DNS的技术原理.
上述DNS查询的常规流程.
PC -> Local DNS -> Root DNS -> ns1.chinadns.com ->IP -> 返回给PC
智能DNS的工作原理即是在ns1.chinadns.com这一步.工作流程如下:
PC -> Local DNS -> Root DNS -> 智能DNS解析 -> 返回IP地址 -> 返回给PC
看到这里.出现了一个问题.如何判断这个请求DNS的PC.他是电信线路还是网通线路呢?
有2个方法.一个聪明的.一个笨的.我们先说笨的方法.如果智能DNS有一张庞大的IP地址分配表.表里面有所有的电信IP地址段和所有的网通地址段.则可以通过查询这个IP地址表来判断.请求的PC是属于哪个线路上的.这个方法是最直接.最高效.最稳妥的方法.虽然的确是笨了点.但是请各位注意.往往笨的方法就代表着稳定.代表着高可用性.所以.我很遗憾的告诉大家.基本上银行.证券.金融.这些重要部门.都是使用的这种笨的方法.
另外一个聪明的方法.则是通过智能的动态检测的方法.在智能DNS解析设备接受到PC的DNS请求的时候.将使用电信/网通的2条线路分别发送一个探测包.发送目标可以为目标PC的IP地址.不过更多的发送目标为Local DNS.这个包可能是ICMP的PING包.也可能是反向DNS查询的DNS包(TCP 53).当2个包有回应后.比较2个包的
时间戳.延迟小的.则判定为优先解析的链路.
解决办法
每个网络都有一些链路定期会超载。我们通常可以使用网络管理系统的报告或使用
命令行界面(CLI)收集接口信息的脚本来鉴定这些链路,查看输出丢包率高的链路。注意:输入丢包是罕见的,通常意味着设备中的分组处理路径以某种方式受到影响。任何输入丢包都应该进行检查。还要注意的是
简单网络管理协议也使用术语丢包(discards),于是命令行界面(CLI)经常使用属于丢包(drops).CLI的输出一般是这样的语句:
Gigabit Ethernet 1/10 is up, line protocol is up (connected)
Hardware is C 6k 1000Mb 802.3, address is 0008.6a2f.18a5
Input queue: 0/2000/0/0 (size/max/drops/flushes);
Total output drops: 116123
5 minute input rate 62675000 bits/sec, 6824 packets/sec
5 minute output rate 14618000 bits/sec, 4944 packets/sec
相对于接口输出包的总数,计算丢包的百分比。任何接口呈现的丢包率大于0.0001%都应该注意,因为这个丢包率表示使用
TCP协议会受到影响。另一种方法是,跟踪丢包数超过某个阈值的接口,这个阈值可以是1万个丢包数/天。
一旦拥塞接口确定,那么就可以通过提高服务质量(QoS)或提高接口速度来解决问题。首先我们来看一下QoS解决方案,然后再看看有哪些因素决定了链路拥塞可以得到解决,以及链路速度是否必须升级。