安装varnish
[root@node3 ~]# ls anaconda-ks.cfg install.log.syslog varnish-docs-3.0.6-1.el6.x86_64.rpminstall.log varnish-3.0.6-1.el6.x86_64.rpm varnish-libs-3.0.6-1.el6.x86_64.rpm [root@node3 ~]# rpm -ivh varnish-3.0.6-1.el6.x86_64.rpm varnish-libs-3.0.6-1.el6.x86_64.rpm varnish-docs-3.0.6-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:varnish-libs ########################################### [ 33%] 2:varnish ########################################### [ 67%] 3:varnish-docs ########################################### [100%]
配置varnish运行属性
varnish配置文件
varnishadm管理工具连接
[root@node3 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 200 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,2.6.32-504.el6.x86_64,x86_64,-sfile,-smalloc,-hcritbit varnish-3.0.6 revision 1899836 Type 'help' for command list. Type 'quit' to close CLI session. varnish>
修改default.vcl配置文件测试
backend webserver { .host = "172.16.30.11"; .port = "80"; }
varnishadm管理工具重新载入配置文件
varnish> vcl.load t1 /etc/varnish/default.vcl ##载入配置文件,t1是给此配置命名,后面跟配置文件,如果有错误会有提示 200 VCL compiled. varnish> vcl.use t1 ##使用上面载入的配置文件,不用重启varnish 200 varnish>
测试结果
在172.16.30.11的主机上安装好wordpress,这里不在详细列出
修改default.vcl为wordpress加速
注:此配置文件参考《高性能Linux服务器构建实战》高俊峰 著
backend webserver { ##定义的后端主机,此主机上有wordpress .host = "172.16.30.11"; .port = "80"; } sub vcl_recv { if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip; } else { set req.http.X-Forwarded-For = client.ip; } if (req.request != "GET" && ##如果请求的类型不是GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE时,则进入“pipe”模式 req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { /* Non-RFC2616 or CONNECT which is weird. */ return (pipe); } if (req.request != "GET" && req.request != "HEAD") { ##如果请求的类型不是GET或HEAD,则进入pass模式 return (pass); } if (req.http.Authorization || req.http.Cookie) { return (pass); } } sub vcl_pipe { return (pipe); } sub vcl_pass { return (pass); } sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); } sub vcl_hit { return (deliver); } sub vcl_miss { return (fetch); } sub vcl_deliver { ##测试缓存是否命中 if (obj.hits > 0){ set resp.http.X-Cache = "HIT"; } else{ set resp.http.X-Cache = "MISS"; } return (deliver); }
测试使用和不使用varnish的区别
在非此两台主机的主机上使用ab进行压力测试
顺便附上varnish主机的cpu与httpd主机的cpu使用
直接对httpd服务器进行ab压力测试,因为电脑性能低,只测试了少量并发。
总结
直接访问只有可怜的1.73个请求,而使用varnish每秒处理985个请求,可见varnish的作用。
本文只是简单的测试了varnish的作用,有错误还望指出~~