天天看點

varnish

一,varnish原理:

    varnish的特性:

    1,緩存位置:可以使用記憶體也可以使用磁盤,如果使用磁盤的話推薦SSD做RAID1

    2,日志存儲:日志也可以存儲在記憶體中

    3,支援虛拟記憶體。

    4,有精确的時間管理機制,及緩存的時間屬性控制

    5,狀态引擎架構:在不同的引擎上完成對不同的緩存代理資料進行處理,可以通過特定的配置語言設計不同的控制語句,以決定資料在不同位置以不同方式緩存,在特定的地方對經過的封包進行特定規則的處理

     6,緩存管理:以二叉堆格式管理緩存資料,做到資料的即時清理

    簡單架構:

    分為management程序和child程序

        menagenment程序:對子程序進行管理,同時對VCL配置進行編譯,并應用到不同的狀态引擎

        child程序:生成線程池,負責對使用者請求進行處理,并通過hash查找傳回使用者結果。

    varnish主要配置檔案

        varnish配置主要分為:後端配置,ACL配置,probes配置,directors配置,核心子程序配置幾大塊,其中後端配置是必要的,在多台伺服器中還會用到directors配置,核心子程式配置

        後端配置:即給varnish添加反代伺服器節點,最少配置一個

        ACL配置:即給varnish添加通路控制清單,可以指定這些清單通路或禁止通路

        probes配置:即給varnish添加負載均衡模式管理多個後端伺服器

        核心子程序配置:即給varnish添加後端伺服器切換,請求緩存,通路控制,錯誤處理等規則

        req:the request object,請求到達可用的變量

        berep:the backend request object,向後端主機請求時可用的變量

        beresp:the backend response object,從後端足迹擷取内容是可用的變量

        resp:the http response object,對用戶端響應時可用變量

        obj:存儲的記憶體中時對象屬性相關的可用變量

        now:作用:放好目前時間戳

二,安裝varnish

    安裝依賴關系的軟體包

    yum -y install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx

    安裝varnish

    解壓目錄

    編譯安裝:

    複制vcl檔案(編譯安裝目錄下),如果安裝目錄裡沒有defalut.vcl檔案。指派打掃安裝目錄的/usr/local/var/varnish目錄下。這個檔案隻是一個帶注釋的參考配置。一般由自己vim設定一個新配置檔案。

三,varnish

    varnish配置基本上是編輯vcl檔案,有自定義文法,啟動是,會将配置檔案編譯為c語言,在執行。

    1,後端伺服器位址配置及後端伺服器健康檢查

        varnish有“後端”或者“源”伺服器的概念,backend server提供給varnish加速的内容,實際上就是給varnish添加可供通路的web伺服器,如果有多台web伺服器,可添加多個backend塊

    後端伺服器定義:

    文法格式:

        backend name{

            .attribute="value";

        }

        backend是定義後端關鍵字,name是目前後端節點的别名,多個後端節點是,name名不能重複,負責覆寫,花括号裡面定義目前節點相關屬性。預設節點外其他節點定義後必須有調用。負責varnish無法啟動。

    支援運算符

        =(指派運算)

        ==(相等比較)

        ~(比對,可以使用正規表達式,或通路清單)

        !~(不比對,可以使用正規表達式,或通路控制清單)

        !(非)

        &&(邏輯與)

        ||(邏輯或)

     屬性清單:

        .host="ip位址"

        .port=""

        .host_header=

        .connect_timeout=

        .first_byte_timeout=

        .between_bytes_timeout=

        .probe=probe_name

        .max_connections=

    2,螢幕定義

        文法格式:

        probe name{

        屬性清單:

        .rul="/"

        .request=""

        .expected_response="

        .timeout

        .interval=

        .initial

        .window=

        .threshold

    3,叢集負載均衡directors

        可以定義多個後端,也可以将幾個後端放在一個後端叢集裡面達到負載均衡的目的。也可以将幾個後端組成一組後端,這個組叫做ddirectors,可以提高性能和彈性。

        directors是varnish負載均衡子產品,使用前必須引人directors子產品directors子產品主要包含:round_robiin,random,hash,fallback負載均衡模式。

        round_robin:循環依次逐個選擇後端伺服器

        random:随機選擇後端伺服器,可設定每個後端權重增加随機率

        hash:通過散列随機選擇對應的後端伺服器且保持對應關系,下次則直接找對應的後端伺服器。

        fallback:後備

        set指令是設定變量

        unset指令删除變量

        web_ccluster.add_backend:添加後端伺服器節點,backend為後端配置别名

        real為權重值,随機率計算公式:100*(目前權重/總權重)

        req.backend_hint是varnish的預定義變量,作用是指定請求後端節點

        vcl對象需要使用new關鍵字建立,所忽悠可建立對象都是内定的,使用前必須import,所有new操作隻能在vcl_init子程式中。

本文轉自   宏強   51CTO部落格,原文連結:http://blog.51cto.com/tanhong/1919377