CDN简介
CDN(Content Delivery Network)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
搭建CDN系统可以选择3种主流方案:
1. squid 2. varnish 3. Nginx+memcache
Varnish简介
Varnish是一款高性能的开源HTTP加速器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存。 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能优越于Squid
Varnish工作原理图
VCL (Varnish Configuration Language)处理流程图
处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
加速工作过程
工作流程大致如下:
当varnish上没有缓存时:
当varnish上有缓存数据的时候:
实验环境
三台虚拟机+一台真实主机
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.7.1 | Varnish |
server2 | 172.25.7.2 | Apache |
server3 | 172.25.7.3 | Apache |
foundation7 | 172.25.7.250 | Client |
实验一: 配置varnish服务器
server1
1.下载安装varnish软件包
http://varnish-cache.org/releases/
2.修改varnish的监听端口
[root@server1 ~]# vim /etc/sysconfig/varnish
66 VARNISH_LISTEN_PORT=80
# 设置为监听80端口
3.修改配置文件
修改安全限制文件,保证流量大时,服务正常运行
打开文件的最大数,有如下关系:
内核操作> 操作系统> 软件
内核允许的打开文件最大数
[root@server1 ~]# sysctl -a |grep file
fs.file-nr = 416 0 98862
fs.file-max = 98862
varnish软件的打开文件最大数
默认数量大于内核操作的文件数目.故做如下修改:
[root@server1 varnish]# vim /etc/sysconfig/varnish
8 NFILES=96666
操作系统允许的最大数目:
根据此文件的参数修改内存空间和线程数,文件数应该介于上述两者之间
[root@server1 ~]# vim /etc/sysconfig/varnish
作出如下修改:
[root@server1 ~]# vim /etc/security/limits.conf
varnish - nofile 96667
varnish - memlock 82000
varnish - nproc unlimited
4.开启服务
[root@server1 ~]# /etc/init.d/varnish start
[root@server1 ~]# netstat -antlp