一,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