高性能HTTP加速器Varnish——通过缓存实现加速功能
1. Varnish进程的工作模式
Varnish启动会产生两个进程,master主(管理 management)进程和child子(工作 worker ,主要做cache的工作)进程
作用:
- master进程读入(更新)配置,vcl文件编译,varnish监控,初始化varnish及提供varnish管理接口。
- child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。
注意:Manegement进程每隔几秒探测以下child进程以判断其是否正常运行,如果在指定的时长内未得到child进程的回应,management将会重启此child进程
#查看进程
ps -ef
可以看到,varnish两个进程,第二个进程的副进程号就是第一个的进程号
2. 配置Varnish服务器
在server1中:
vim /etc/varnish/default.vcl
40 if (obj.hits > 0) {
41 set resp.http.X-Cache = "HIT from kaiser cache";
42 }
43 else {
44 set resp.http.X-Cache = "MISS from kaiser cache";
45 }
46 return (deliver);
systemctl restart varnish
vcl_deliver
:在缓存数据将要发送到客户端时调用
查看缓存命中情况:没有缓存时第一次连接会显示MISS from kaiser cache
,有缓存时连接它会显示HIT from kaiser cache
3. 测试
step1 在真机或者其他主机中:
#查看响应请求报文
curl -I 172.25.1.1
可以看到,第一次连接没有缓存显示MISS from kaiser cache
,之后再连接就会显示HIT from kaiser cache
step2 清除缓存后再次测试:
#在server1中(清除所有)
varnishadm ban req.url "~" /
#在真机中
curl -I 172.25.1.1
step3 还可以清除指定的页面
访问指定的页面:
#真机
curl -I 172.25.1.1/index.html
#在server1中(清除指定缓存)
varnishadm ban req.url "~" /index.html
清除后再次连接:
#真机
curl -I 172.25.1.1/index.html