HTTP緩存之Varnish安裝部署與配置

Varnish是一款高性能的開源HTTP加速器,其採用全新的軟件體系機構,和現在的硬件體系緊密配合,與傳統的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等諸多優點,很多大型的網站都開始嘗試使用 varnish 來替換 squid,這些都促進 varnish 迅速發展起來。

Varnish 的作者Poul-Henning Kamp是FreeBSD的內核開發者之一,他認爲現在的計算機比起1975年已經複雜許多。在1975年時,儲存媒介只有兩種:內存與硬盤。但現在計算機系統的內存除了主存外,還包括了CPU內的L1、L2,甚至有L3快取。硬盤上也有自己的快取裝置,因此Squid Cache自行處理物件替換的架構不可能得知這些情況而做到最佳化,但操作系統可以得知這些情況,所以這部份的工作應該交給操作系統處理,這就是 Varnish cache設計架構。

 

緩存類型:代理式緩存(遞歸方式);旁掛式緩存(迭代)

緩存機制:過期機制(Expires)、條件式緩存(通過最近文件修改時間戳或Etag的擴展標籤來辨別)

 

 

官方網站:http://varnish-cache.org/releases/index.html

 

安裝varnish與配置 :

rpm安裝:

curl -s https://packagecloud.io/install/repositories/varnishcache/varnish61/script.rpm.sh | sudo bash

sudo yum install varnish-6.1.1-1.el7.x86_64

或,下載rpm包,然後執行:

wget https://packagecloud.io/varnishcache/varnish61/packages/el/7/varnish-6.1.1-1.el7.x86_64.rpm

rpm -ivh varnish-6.1.1-1.el7.x86_64.rpm

或下載rpm包後執行:yum install varnish-devel.x86_64 varnish-libs-devel.x86_64 -y

 

啓動: systemctl start varnish或service varnish start

 

 

Varnish配置文件參考手冊: https://docs.varnish-software.com/

 

配置文件修改: vim /etc/varnish/default.vcl  ,一個案例演示:黃色是服務器主機名,綠色是IP

backend imgsrv1 {

                .host = "192.168.10.11";

                .port = "80";

}

        

backend imgsrv2 {

                .host = "192.168.10.12";

                .port = "80";

}       

        

backend appsrv1 {

                .host = "192.168.10.21";

                .port = "80";

}

        

backend appsrv2 {

                .host = "192.168.10.22";

                .port = "80";

}

        

sub vcl_init {

                new imgsrvs = directors.random();

                imgsrvs.add_backend(imgsrv1,10);

                imgsrvs.add_backend(imgsrv2,20);

                new staticsrvs = directors.round_robin();

                appsrvs.add_backend(appsrv1);

                appsrvs.add_backend(appsrv2);

                

                new appsrvs = directors.hash();

                appsrvs.add_backend(appsrv1,1);

                appsrvs.add_backend(appsrv2,1);         

}

      

sub vcl_recv {

                if (req.url ~ "(?i)\.(css|js)$" {

                        set req.backend_hint = staticsrvs.backend();

                }               

                if (req.url ~ "(?i)\.(jpg|jpeg|png|gif)$" {

                        set req.backend_hint = imgsrvs.backend();

                } else {                

                        set req.backend_hint = appsrvs.backend(req.http.cookie);

                }

}

 

 

varnish的幾個命令行工具介紹:

varnishlog   把每一個請求拆開詳細顯示

varnishtop   把請求method按照速率做一個簡單排序

varnishstat  動態顯示請求

參數:-l -f FILED_NAME 只顯示特定性一次;

-l 可用於-f選項指定的字段名稱列表

varnishncsa  按照ncsa格式顯示日誌

 

varnish的訪問日誌一般在內存中,容量大概只有80-90M,用不了多久就會被覆蓋,如果不想別覆蓋,可以把varnishncsa當日志服務啓動(建議不開啓日誌功能,容易產生干擾)

 

varnish程序的幾個重要文件:

/etc/varnish/varnish.params: 配置varnish服務進程的工作特性,例如監聽的地址和端口,緩存機制;
 /etc/varnish/default.vcl:配置各Child/Cache線程的緩存策略;
 主程序:/usr/sbin/varnishd

 

 

 

 

 

   

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章