Varnish—CDN加速的实现(单个后端服务器)
Varnish的工作原理图:
Varnish是一款高性能、开源的反向代理服务器和缓存服务器。Varnish使用内存缓存文件来减少响应时间和网络带宽消耗。这个项目是由挪威的一家报纸Verdens Gang的网络分支起始的,其架构设计和开发总监Poul-Henning Kamp是FreeBSD核心的开发人员之一,最初项目的管理与基础设施及额外开发由挪威一家Linux咨询公司Linpro提供。
说到varnish,squid就不得不提及。squid算得上是古老的缓存服务器。由于varnish先进的设计理念,性能要比squid高上许多,varnish还可以通过端口进行管理,使用正则语句做到清除指定缓存的功能,这些squid都做不到。但是varnish在高并发的情况下,资源消耗较高,而且varnish服务进程一旦崩溃,重启,内存中的缓存数据将全部丢失。
VCL (Varnish Configuration Language)处理流程图:
处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
CDN简介:
CDN的全称——Content Delivery Network,即内容分发网络。
基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
配置单个后端服务器
实验环境
主机 | ip地址 |
---|---|
server1 (varnish服务器) | 172.25.5.1 |
server2(后端服务器) | 172.25.5.2 |
foundation4(客户端,测试端) | 172.25.5.250 |
1.配置server1:
1.在官网下载varnish-libs-3.0.5-1.el6.x86_64.rpm和varnish-3.0.5-1.el6.x86_64.rpm
http://varnish-cache.org/releases/install_redhat.html#install-redhat
2.安装varnish
- 安装完成后,在系统的/etc/passwd中生成varnish用户,对varnish的访问控制实质上是对varnish用户的控制实现的
3.查看varnish的配置文件
4.配置varnish的配置文件
[[email protected] ~]# vim /etc/sysconfig/varnish
8 NFILES=131072 # 最多能打开的文件数,varnish会自动调整该值
12 MEMLOCK=82000 # 最多能使用的内存空间,varnish会自动调整该值
15 NPROCS="unlimited" # 单个用户所能运行的最大线程数
66 VARNISH_LISTEN_PORT=80 #修改端口
5.查看系统最多能打开的文件数,如果少于服务要求的,应该加大虚拟机内存(
因为varnish这个程序运行在varnish这个用户的私有空间内,内核对普通用户限制的最大文件数为1024.对varnish用户限制的最大文件数为131072,我们需要满足131072这个最大值。
)
6.修改varnish用户的限制文件
7.配置一个要缓存的后端服务器
8.配置完成,启动varnish服务
9.查看varnish服务是否在运行
2.配置server2
1.下载httpd服务
2.在默认发布文件中写入内容
3.开启http服务