安裝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的作用,有錯誤還望指出~~