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

    wKiom1j_HFyCaMYUAACzRh98zv8372.jpg-wh_50

    安裝varnish

    官方網址爲http://varnish-cache.org。varnish有時會被牆。

    解壓目錄

    wKioL1j_HRmQdImHAACzFQtoKeE377.jpg-wh_50

    編譯安裝:

    wKioL1j_HfKBEhYUAADUXO3khTE394.jpg-wh_50

    複製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{

            .attribute="value";

        }

        屬性列表:

        .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子程序中。

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