varnish基礎入門使用

varnish:緩存、加速器,反向HTTP代理

varnish通過可以基於文件系統接口進行訪問的共享內在區域來記錄日誌(shared memory log),共享內存日誌大小默認一般爲90MB,

   分爲兩部分:前一部分爲計數器,後一部分請求相關的數據

管理進程:編譯VCL並應用新配置;監控vanish;初始化varnish;CLI接口;

Child/cache:

Acceptor:接收新的連接請求;

worker threads:處理用戶請求;

Expiry:清理緩存中的過期對象;

vcl: Varnish Configuration Language

緩存策略配置接口;

基於“域”的簡單編程語言;

varnish如何存儲緩存對象:

file: 單個文件;不支持持久機制;

malloc: 內存;使用malloc()庫調用在varnish啓動時向內在申請指定大小的空間

persistent:基於文件的持久存儲;

malloc-syntax: malloc[,size]

file-syntax: file[,path[,size[,granularity]]]


安裝:yum install varnish epel源

配置文件:

    配置進程相關參數:/etc/varnish/varnish.params

    配置緩存功能:/etc/varnish/default.vcl

命令行工具:varnishadm -S /etc/varnish/secret -T IP:PORT  6082

緩存處理的步驟:接收請求 --> 解析請求 (提取請求的URL及各種首部)--> 查詢緩存 --> 新鮮度檢測 --> 創建響應報文 --> 發送響應 --> 記錄日誌

請求處理流程:

(1)請求的爲可緩存:

a.命中:通過本地緩存響應

b.未命中:到後端服務器取得相應內容;

可緩存對象:先緩存再響應

緩存:定義緩存時間;自定義緩存鍵

不可緩存:不緩存直接響應

(2)請求的爲不可緩存:直接到後端服務器取得相應內容

配置vcl使用:

1.定義在vcl_deliver中,向響應給客戶端的報文添加一個自定義首部X-Cache;

      if (obj.hits>0) {

    set resp.http.X-Cache = "HIT"; "HIT via" + "   # " + server.ip;顯示後端響應的服務器IP

   } else {

    set resp.http.X-Cahce = "MISS";

  }

2.強制對某資源的請求,不檢查緩存#以login、admin開頭的不予緩存;

image.png

vcl: backend, backend的調用,健康狀態檢測的定義,負載均衡的實現,根據資源類型不同完成分發,控制哪些內容不查或查詢緩存

3.backend server定義

    backend name {

         .attribute = "value";

    }

常用選項:

.host: BE主機的IP;

.port:BE主機監聽的PORT;

.probe: 對BE做健康狀態檢測;

.max_connections:並連接最大數量;

4.backend server的健康狀態檢查定義:

    .url: 判定BE健康與否要請求的url; 

    .expected_response:期望響應狀態碼;默認爲200;

    .interval = 1s;間隔多長時間

    .window = 8;基於最近多少次探測來做健康判斷

    .threadhold = 4;基於多少次探測成功多少次 

    .timeout = 2s;超時時間 

例如:多個backend server基於不同的資源類型請求來調度,並做健康狀態檢測,實現動靜分離

image.png

5.實現負載均衡:

import directors; #加載負載均衡

sub vcl_init {

 new mycluster = directors.round_robin(); 定義負載均衡器名稱:new NAME ,指明調度方法

mycluster.add_backend(websrv1);

mycluster.add_backend(websrv2);

}

vcl_recv {

set req.backend_hint = mycluster.backend();

}

調度算法:fallback, random, round_robin, hash


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