一,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
官方網址爲http://varnish-cache.org。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{
.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子程序中。