一.Varnish简述
varnish是一款高性能且开源的方向代理服务器和HTTP加速器,它的开发者poul-Henning kamp FreeBSD 核心的开发人员之一。varnish采用全新的软件体系机构,和现在的硬件体系配合紧密,varnish是一个轻量级的cache和反向代理软件。先进的设计理念和成熟的设计框架式varnish的主要特点。
二.varnish的特点
1、基于内存进行缓存,重启后数据将消失。
2、利用虚拟内存方式,I\O性能好。
3、支持设置0~60秒的精确缓存时间。
4、VCL配置管理比较灵活。
5、具有强大的管理功能,例如top、stat、admin、list 等。
6、状态机设计巧妙、结构清晰。
7、利用二叉堆管理缓存文件,可达到积极删除目的。
三.varnish处理缓存的过程
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或 Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进 入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地 的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
四.varnih的使用
实验所需环境:三台配置好网络的虚拟机,分别设置主机名为server1、server2、server3
1.安装服务
在server1中打开官网,下载rpm包进行安装
yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
2.配置服务
编辑系统配置文件,文件的参数需要根据实际的系统内核及系统还有相关硬件设定
vim /etc/security/limits.conf 写入: varnish - nofile 6555 ##最大文件数 varnish - memlock 82000 ##最大内存空间 varnish - nproc unlimited ##子线程数
编辑服务配置文件
vim /etc/sysconfig/varnish ##varnish的配置文件,配置 varnish 服务端口 VARNISH_LISTEN_PORT=80 ##varnish监听端口
vim /etc/varnish/default.vcl ##配置一个后端服务器,缓存配置 backend default { .host = "172.25.3.2"; ##host指定要缓存的后端服务器地址 .port = "80"; }
3.启动服务
/etc/init.d/varnish start
4.测试
在server2中配置好http服务,并编写一个网页文件index.html,内容任意
在真机中打开浏览器输入server1的IP地址,可以看到server2中的发布页面内容
5.查看缓存命中情况
在varnish服务器上
vim default.vcl 12 sub vcl_deliver { 13 if (obj.hits > 0) { 14 set resp.http.X-Cache = "HIT from westos cache"; #命中显示 15 } 16 else { 17 set resp.http.X-Cache = "MISS from westos cache"; ##没命中显示 18 } 19 return (deliver); 20 } /etc/init.d/varnish reload #varnish支持热插拔
6.清除缓存
varnishadm ban.url .*$ ##清除所有
varnishadm ban.url /index.html ##除 index.html 页面缓存
varnishadm ban.url /admin/$ 清除 admin 目录缓存