Varnish程序结构和初步配置

一.varnish概念:
1.varnish官网:
[cc lang="bash"]
http://www.varnish-cache.org/
[/cc]
新鲜度监测机制:
过期时间:http/1.1 cache-control:max-age Cache-Control:max-age=600
2.条件式请求首部:
if-modidied-since:基于请求内容的时间戳做验证。
if-unmodified:
if-match:
if-none-match:
3.条件式请求:
last Modified/If-Modified-Since
在cache-control的请求段中no-cache是不要缓存实体,要从现在的web服务器去取
在响应里面no-cache的意思是可以缓存,但是只有在跟web服务器验证了其有效性之后,才能返回客户端;而响应的ALL:no-store才是不缓存
4.Management的公用:
管理进程,编译VCL并应用新配置,监控carnish,初始化varnish,并提供一个CLI
5.Child/Cache线程有几类:
acceptor:接受新的连接请求
worker:用于处理并响应用户请求
expiry:从缓存中清理过期缓存。
6.日志:
shared Menmory log 共享内存大小默认为90m,两部分组成,前部分为计数器,后部分为客户端请求相关数据。
7.state engine:
val配置的缓存策略在此state engine发挥作用
vcl_recv:若没有定义,将会指定默认的。
8.vcl的配置语法:
(1)//,#,/*comment*/ 用于注释
(2)sub $name 用于 定义函数
(3)不支持循环
(4)有众多内置变量
(5)支持终止语句,没有返回值
(6)“域”专用语言
(7)操作符(",--,~,!,&&,||)
9.state engine之间的相关性
上级 engine通过return指明下级engine;
vcl_recv:
vcl_pipe:
vcl_pass:
vcl_hash:
vcl_hit:
vcl_miss
vcl_fetch:
vcl_delier:
vcl_error:

二.安装配置varnish:
1.下载并安装
varnish-3.0.6-1.el6.x86_64.rpm
varnish-docs-3.0.6-1.el6.x86_64.rpm
varnish-libs-3.0.6-1.el6.x86_64.rpm
[cc lang="bash"]
[root@node1 ~]# rpm -ivh *.rpm
Preparing... ########################################### [100%]
1:varnish-libs ########################################### [ 33%]
2:varnish ########################################### [ 67%]
3:varnish-docs ########################################### [100%]
[/cc]
varnish:支持后端缓存存储机制:
对于varnish一旦缓存,数据将会重新缓存。有个预热的过程。
-s type
maloc[size]
file [path, size ]
persistent:path,size
二.启动varnish
1.编辑脚本的配置文件进行修改:
[cc lang="bash"]
[root@kali /]# vim /etc/sysconfig/varnish
[/cc]
[cc lang="bash"]
VARNISH_VCL_CONF=/etc/varnish/default.vcl //默认读取的配置文件
VARNISH_LISTEN_PORT=6081 //默认监听端口要修改为80
VARNISH_ADMIN_LISTEN_PORT=6082 //cli interface的配置接口端口
VARNISH_SECRET_FILE=/etc/varnish/secret //启动时加载的密钥文件
VARNISH_MIN_THREADS=50 //启动时候最少启动线
VARNISH_MAX_THREADS=1000 //最大的启动线程
VARNISH_THREAD_TIMEOUT=120 //线程超时时间
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin //缓存文件
VARNISH_STORAGE_SIZE=1G //缓存文件的大小
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}" //存储文件类型
VARNISH_TTL=120 //生存周期
[/cc]
2.修改以下两行可以设置为内存缓存:
[cc lang="bash"]
VARNISH_LISTEN_PORT=80
VARNISH_STORAGE_SHM=54M
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SHM}"
[/cc]
3.进入varnish的安装路径,备份default.vcl配置文件
[cc lang="bash"]
[root@node1 varnish]# cp default.vcl{,.bak}[/cc]
[cc lang="bash"]
[root@node1 varnish]# vim default.vcl
[/cc]
[cc lang="bash"]
backend default {
.host = "172.16.249.152";
.port = "80";
}
[/cc]

重启即可访问。
4.varnishadm命令行的用法:
[cc lang="bash"]
[root@node1 varnish]# varnishadm --help
[/cc]
usage: varnishadm [-n ident] [-t timeout] [-S secretfile] -T [address]:port command [...]
[cc lang="bash"]
[root@node1 varnish]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 本地接口登录
[/cc]
常用参数:
vcl.load //读取配置文件
vcl.inline
vcl.use //使用配置文件
vcl.discard //清除配置文件
vcl.list //查看配置文件
vcl.show //当前使用的VCL
vcl的使用:
[cc lang="bash"]
varnish> vcl.load t1 ./default.vcl //读取编译配置文件
[/cc]
200
VCL compiled.
[cc lang="bash"]
varnish> vcl.list //查看配置文件
[/cc]
200
active 2 boot
available 0 t1
[cc lang="bash"]
varnish> vcl.use t1 使用当前t1的配置
[/cc]
200
5.添加VCL的信息,查看是否命中:
在vcl_deliver中添加:
[cc lang="bash"]
sub vcl_deliver {
if (obj.hits>0){
set resp.http.X-Cache ="HIT";
} else {
set resp.http.X-Cache="MISS";
}
return (deliver);
}
[/cc]
添加好之后,在浏览器打开调试之后就可以看到缓存是否命中.

varnish2015060901


发表评论

登录 后发表评论.