Varnish與一般服務器軟件類似,分為master(management)進程和child(worker,主要做cache的工作)進程。master進程讀入命令,進行一些初始化,然后fork并監控child進程。child進程分配若干線程進行工作,主要包括一些管理線程和很多woker線程。
varnish架構圖:
varnish的配置示例:
1、主配置文件的修改:
varnish作為web服務的反向代理服務器,要監聽在80端口,因此要修改配置文件:
vim /etc/varnish/varnish.params
記得創建你所指定的路徑:mkdir /data/varnish/cache
并將屬主屬組修改為varnish:chown -R varnish:varnish /data/varnish/cache
2、配置后端主機:
vim /etc/varnish/default.vcl
后端主機安裝httpd作為測試
重讀default.vcl文件:varnsih_reload_vcl 或者通過交互式方式重載配置varnish配置:varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
命令行下:
網頁通過http訪問此varnish主機得到:,說明后端主機配置成功
3、VCL: ”域“專有類型的配置語言
VCL有多個狀態引擎,狀態之間存在相關性,但狀態引擎彼此間互相隔離;每個狀態引擎可使用return(x)指明關聯至哪個下一級引擎;每個狀態引擎對應于vcl文件中的一個配置段,即為subroutine
介紹幾個VCL配置的實例:
(1)添加報文首部:vim default.vcl
在sub vcl_deliver中添加
if (obj.hits>0) {
在交互式命令行下手動裝載配置,并使用:
vcl.load test default.vcl
vcl_use test
測試:
刷新網頁,再次訪問,會出現“HIT via....”字樣
(2)強制對某類資源的請求不檢查緩存,在請求報文中包含以/login|admin 為首的不查緩存,直接送到backend(后端服務器):
禁止以curl方式訪問:
測試:
(3)對于特定類型的資源,例如公開的圖片等,取消其私有標識(cookie),并強行設定其可以由varnish緩存的時長;
sub vcl_backend_response {
}
(4)設置后端服務器日志中記錄真實的客戶端地址:
}
并在后端服務器中設置日志格式:
vim /etc/httpd/conf/httpd.conf
將格式修改為:LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\“ %>s %b \” %{Referer}i\” \”%{User-Agent}i\”” combined
測試:
(5)訪問控制
測試:緩存后,用curl查看網頁信息
裁剪,將緩存刪除:curl -X PURGE http://172.16.252.187/index.html
Banning 在交互式模式 用于臨時按需要清理緩存
示例:
(6)負載均衡,Director:
示例:
動靜分離配置示例:
import directors
…..
(7)基于cookie的session sticky:
(8)健康狀態檢測:
配置示例:
顯示健康狀態信息,在交互式界面中:
4、性能調整:vim /etc/varnish/varnish.params
根據對網頁的測試來適當調整數值
5、varnish日志
原創文章,作者:Immortals、zcy,如若轉載,請注明出處:http://www.www58058.com/80431