Linux varnish安裝配置

2021-06-02 09:39:17 字數 3055 閱讀 7322

1、varnish簡介

varnish是一款高效能且開源的反向**伺服器(reverse proxy server),挪威最大的線上報紙verdens gang使用3臺varnish代替了原本的12臺squid, 效能比以前更好。varnish的作者poul-henning kamp是freebsd核心的開發人員之一,他認為現在的電腦比起2023年已經複雜許多。在那個時代,儲存媒介只有兩種:記憶體與硬碟。但現在電腦系統的記憶體除了主記憶體外,還包括了cpu內的l1、l2,甚至有l3快取。硬碟上也有自己的快取裝置,因此squid cache自行處理物件替換的架構不可能得知這些情況而做到最佳化,但作業系統可以得知這些情況,所以有關這部份的工作交給作業系統處理,這就是varnish cache的設計架構。

一般來說,使用varnish代替squid的理由有三點:

1.1、varnish採用了「visual page cache」技術,在記憶體的利用上,varnish比squid更具有優勢,它避免了squid頻繁在記憶體、硬碟中交換檔案,效能比squid還高。

1.2、varnish的穩定性高,進行相同工作的squid伺服器發生故障的機率似乎比varnish高。

1.3、通過varnish管理埠,可以使用正規表示式、批量地清除部分快取,這一點是squid不能具備的。

2、安裝及啟用

2.4、監測

檢視日誌

# varnishlog

檢視連線數與命中率等

# varnishstat

開啟日誌

# varnishncsa -w /var/log/varnish.log &

3、default.vcl配置說明

vcl_recv

有請求到達後成功接收並分析時被呼叫,一般以以下幾個關鍵字結束。

error code [reason] 返回code給客戶端,並放棄處理該請求

pass 進入pass模式,把控制權交給vcl_pass

pipe 進入pipe模式,把控制權交給vcl_pipe

lookup 在快取裡查詢被請求的物件,根據查詢結果把控制權交給vcl_hit或vcl_miss

vcl_pipe

進入pipe模式時被呼叫。請求被直接傳送到backend,後端和客戶端之間的後繼資料不進行處理,只是簡單傳遞,直到一方關閉連線。一般以以下幾個關鍵字結束。

error code [reason]

pipe

vcl_pass

進入pass模式時被呼叫。請求被送到後端,後端應答資料送給客戶端,但不進入快取。同一連線的後繼請求正常處理。一般以以下幾個關鍵字結束。

error code [reason]

pass

vcl_hash

目前不使用

vcl_hit

在lookup以後如果在cache中找到請求的內容事呼叫。一般以以下幾個關鍵字結束。

error code [reason]

pass

deliver 將找到的內容傳送給客戶端,把控制權交給vcl_deliver.

vcl_miss

lookup後但沒有找到快取內容時呼叫,可以用於判斷是否需要從後端伺服器取內容。一般以以下幾個關鍵字結束。

error code [reason]

pass

fetch 從後端取得請求的內容,把控制權交給vcl_fetch.

vcl_fetch

從後端取得內容後呼叫。一般以以下幾個關鍵字結束。

error code [reason]

pass

insert 將取到的內容插入快取,然後傳送給客戶端,把控制權交給vcl_deliver

vcl_deliver

快取內容發動給客戶端前呼叫。一般以以下幾個關鍵字結束。

error code [reason]

deliver 內容傳送給客戶端

vcl_timeout

在快取內容到期前呼叫。一般以以下幾個關鍵字結束。

fetch 從後端取得該內容

discard 丟棄該內容

vcl_discard

由於到期或者空間不足而丟棄快取內容時呼叫。一般以以下幾個關鍵字結束。

discard 丟棄

keep 繼續保留在快取裡

如果這些內建例程沒有被定義,則執行預設動作

一些內建的變數

now 當前時間,標準時間點(1970)到現在的秒數

backend.host 後端的ip或主機名

backend.port 後端的服務名或埠

請求到達後有效的變數

client.ip 客戶端ip

server.ip 服務端ip

req.request 請求型別,比如get或者head或者post

req.url 請求的url

req.proto 請求的http版本號

req.backend 請求對應的後端

req.http.header 對應的http頭

往後段的請求時有效的變數

bereq.request 比如get或head

bereq.url url

bereq.proto 協議版本

bereq.http.header http頭

從cache或後端取到內容後有效的變數

obj.proto http協議版本

obj.status http狀態**

obj.response http狀態資訊

obj.valid 是否有效的http應答

obj.cacheable 是否可以快取的內容,也就是說如果http返回是200、203、300、301、302、404、410並且有非0的生存期,則為可快取

obj.ttl 生存期,秒

obj.lastuse 上一次請求到現在間隔秒數

對客戶端應答時有效的變數

resp.proto response的http版本

resp.status 回給客戶端的http狀態**

resp.response 回給客戶端的http狀態資訊

resp.http.header http頭

的安裝配置 Manjaro Linux安裝配置

安裝wmtools 1.解除安裝舊版本 sudo pacman r open vm tools git clone 3.執行指令碼進行安裝 cd vmware tools patches sudo patched open vm tools.sh 安裝vim sudo pacman s vim 更新...

Graphite Simulator安裝配置方法

graphite simulator是由mit的carbon研究組開發的一款並行分布式全系統模擬器,該小組隸屬於原raw chip設計團隊,並與tilera公司關係緊密。graphite通過對一系列計算機體系結構領域常用模擬器的整合,為研究者提供了乙個全系統模擬環境。graphite可模擬的部分包括...

Vmware workstation安裝配置

作業系統 centos7 如果要實現主機和虛擬機器之間的檔案拖拽,除了安裝vmware tools外,還需要安裝圖形介面 gnome。1 首先安裝x xwindow system 命令為 yum groupinstall x window system 回車 注意有引號 檢查一下我們已經安裝的軟體以...