1. 使用CND实现应用的缓存和加速
1.1 CND简介
CDN的全称是Content Delivery Network,即内容分发网络。
- CDN是构建在网络之上的内容分发网络;
- CDN使用户就近获取所需内容,降低网络堵塞,提供用户访问响应速度和命中率;
- CND依靠部署在各地的边缘服务器,包括中心平台的负载均衡、内容分发、调度等功能模块;
可以使用dig 域名 命令 查看解析信息
1.2 CND主要特点
- 本地cache加速:提高了企业站点,尤其是含有大量图片和静态页面站点的访问速度,并大大提高以上性质站点的稳定性
- 镜像服务:消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量
- 远程加速:远程访问用户根据DNS负载均衡技术智能自动选择cache服务器,选择最快的cache服务器,加快远程访问速度
- 带宽优化:自动生成服务器的远程mirror镜像cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点web服务器负载等功能
- 集群抗攻击:广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效预防黑客入侵及降低各种DOS攻击对网站的影响,同时保证较好的服务质量
1.3 CND服务模式
内容分发网络是一个经策略性部署的整体系统,包括以下3个要件:
- 分发服务系统:最基本的工作单元就是cache设备,cache负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时cache还负责与源站点进行内容同步,把更新的内容及本地没有的内容从源站点获取并保存在本地。cache设备的数量、规模、总服务能力是衡量一个cdn系统服务能力的最基本的指标
- 负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡GSLB和本地负载均衡SLB。GSLB主要根据用户就近原则,通过对每个服务节点进行最优判断,确定向用户提供服务的cache的物理位置。SLB主要负责节点内部的设备负载均衡
- 运营管理系统:分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能
1.4 CND工作流程
1.4.1 常规web请求处理流程
用户在自己的浏览器中输入要访问的网站域名
浏览器向本地DNS域名解析器服务器请求对该域名的解析
本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求
本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器
浏览器得到域名解析结果,就是改域名相应的服务设备的IP地址
浏览器向服务器请求内容
服务器将用户请求内容传送给浏览器
1.4.2 引入CDN后web请求处理流程
- 当用户点击网站页面的内容url,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给cname指向的cdn专用DNS服务器
- cdn的dns服务器将cdn的全局负载均衡设备ip地址返回给用户
- 用户向cdn的全局负载均衡设备发起内容url访问请求
- cdn全局负载均衡设备根据用户ip地址,及用户请求的内容url,选择一台用户所属区域负载均衡设备,让用户向这台设备发起请求
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务
- 用户向缓存服务器发起请求,缓存服务器响应用户的请求,将所需内容传送到用户终端
- 如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的原服务器将内容拉倒本地
1.5 CND关键技术
缓存算法:
缓存代理软件:squid
缓存算法决定命中率、源服务器压力、ftp节点存储能力
分发能力:
分发能力取决于IDC能力和IDC策略性分布
负载均衡:
软件:nginx
负载均衡智能调度决定最佳路由、响应时间、可用性、服务质量
基于DNS
DNS服务器软件:BIND
- 基于DNS的负载均衡以CNAME实现域名中转,智能最优节点服务
- 缓存点有客户端浏览器缓存、本地DNS服务器缓存
- 缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存
支持协议:
支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速
2. 通过DNS实现高可靠的负载均衡和访问提速
2.1 DNS简介
DNS Domain Name System 域名系统,其主要作用是将主机名解析成IP地址的过程,完成了从域名到主机识别IP地址之间的转换。
- DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网
- DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这就减轻了DNS服务器的负载,同时也方便记录的更新同步
- DNS是一个网络服务,因此有对应的端口,其端口为53。DNS查询的时候,是以UDP这个快速的数据传输协议来查询的,但万一没有方法查询到完整的信息时,就会再次以tcp这个协议来重新查询,DNS服务在启动的时候会同时开启tcp的53端口和udp的53端口
- DNS在进行区域传输是的时候使用TCP协议,其他时候则使用UDP协议
- FQDN(full Qualified Domain Name): 完整主机名,是有主机名和域名构成。www.baidu.com中www就是web服务器的主机名,baidu.com就是域名
- DNS是基于c/s架构,对应每一级域名长度的限制是63个字符,域名总长度则不超过253个字符
- DNS系统记录的信息非常多,不过重点就两个:一个是记录服务器所在的NS(name server)标志,另一个则是记录主机名对应的A(address)标志
2.2 DNS的域名结构
- DNS的域名是倒状的树形结构,在最底层的是一个根服务器,它主要负责顶级域名的管理
- 一级域名共分为3类,组织域、国家域和反响域,最多可以有127级域名
- 每一级的域名服务器只负责对应下级的域的管理,其中根节点是分布在世界各地的13台服务器组成,其中10台位于美国地区,另外3台在英国、瑞典、日本
2.3 DNS工作原理
DNS解析域名到ip要经过三个阶段:
- 本地DNS缓存解析
- 本地DNS服务器解析,递归查询
- 根域及各级域名服务器解析,迭代查询
2.4 DNS负载均衡
DNS负载均衡技术的实现原理是:在DNS服务器中为同一个主机名配置多个ip地址,多个ip地址以轮询的方式选择。
在linux服务器上使用DIG工具查看具体对域名的解析;
2.5 DNS和其他负载均衡
DNS负载均衡
对同一个请求的域名映射为不同的服务器ip地址
HTTP重定向
http代理比如浏览器向web服务器请求某一个url后,web服务器根据http响应头信息中的location标记来返回一个新的url,然后http代理继续请求访问这个新的url
反向代理负载均衡
以代理服务器来接收web服务器的连接请求,然后转发给内部网络中不同的web服务器,并将从web服务器请求得到的结果返回给请求连接的客户端,以nginx为代表
NAT负载均衡
将公网地址映射为多个私网地址,解决IP地址紧张,不想外部网络知道内部网络结构的问题
CND
通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到离用户最近的缓存节点作为服务提供节点
混合型负载均衡
在有些大型网络中,由于多个服务器群内硬件设备、各自的规模、提供的服务等差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群之间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器集群当作一个新的服务器群),从而达到最佳的性能