架構師日記 VCL介紹和使用

2021-08-04 13:55:12 字數 1920 閱讀 5096

vcl(varnish configuration language):varnish配置語言,語法簡單,功能強大,類似於c,perl。主要用來配置如何處理請求和內容的快取策略。

vcl在執行時會轉換成二進位制**

vcl檔案被分為多個子程式,不同的子程式在不同的時間裡執行,比如乙個子程式在接到請求時執行,另乙個子程式在接收到後端伺服器傳送的檔案時執行

用花括號做界定符,使用分號表示宣告結束。注釋用//,#,/* */

賦值(=)、比較(==)、和一些布林值(!、&&、||),!(取反)等類似c語法

支援正規表示式,acl匹配使用~操作,如if(req.uri ~ 「abc$」),表示請求的uri以abc結尾

不同於c的地方,反斜槓(\)在vcl沒有特殊的含義。只是用來匹配urls

vcl沒有使用者定義的變數,只能給backend、request、document這些物件的變數賦值,大部分是手工輸入的,而且給這些變數分配值的時候,必須有乙個vcl相容的單位

vcl有if,但是沒有迴圈

可以使用set來給request的header新增值,unset或remove來刪除某個header

可以配置多個後台ip和埠

backend abc

backend jkl

若只有乙個那不需要宣告導向哪個backend,配置了多個backend則需要,如

sub vci_recv

}

director是backend的邏輯分組或backend的集群。主要有隨機、迴圈和dns集中director,不同型別的director具有不同的演算法來選擇backend。比如隨機的director示例如下:

director b2 random

}

指向director可以這樣配置

set req.backend = b2;
隨機的director又分成三種,分別是randomclienthash,他們採用同樣的隨機分發演算法,只是種子數值不同,種子數分別採用隨機數、客戶端id或者是快取的hash(典型的url)

你可以通過設定vcl變數client.identity來區分客戶端,值可以從session cookie或其他相似的值來獲取

預設使用url的hash值,可以通過req.hash獲取到

它沒有什麼選項就是一次迴圈使用backend,第乙個請求用第乙個backend,第二個請求使用第二個,如此類推。

有兩種不同的方法來選擇後端,一種是random或者round-robin;另一種是使用.list(list的方式不支援ipv6):

director directorname dns

.ttl = 5m;

.suffix = "internal.example.net"

;}

這段**會指定384個後端,都是用80埠及0.4s的連線超時,.list生命中設定選項必須在ips的前面。.ttl定義dnslookups的時間。

選擇第乙個健康的backend,若先定義的backend沒有down就選先定義的,例項:

director b3 fallback

}

探測後端,確定他們是否健康,返回的狀態用req.backend.healthy核對:

backend jkl

probe p1

訪問控制列表,示例如下

apl local
匹配示例:

if(client.ip ~ local)

if(!client.ip ~ local)

架構師日記 Varnish簡介和安裝

varnish是一款開源的 高效能的http加速器和反向 伺服器 最主要的功能就是 通過快取來實現web訪問加速 主要基於記憶體或者是虛擬記憶體進行快取,效能好 支援設定精確的快取時間 vcl配置管理比較靈活 後端伺服器的負載均衡和健康檢查 區域性支援esi url位址重寫 優雅的處理後端伺服器宕機...

我的架構師夢想日記

第四天 今天想了想還是把rhce的班報了吧,本來想等ocp考完之後再報的,但是某某培訓機構比較坑,非得過了年才能考,好吧。問吳總能不能公司出錢幫我出點錢讓我考這個證,吳總說公司從來沒有過這個先例,這我在我的預料之中,考ocp的錢都是我自己出的,但是還是有一點點小小的失望。今天去拱墅了,又是一通加班,...

我的架構師夢想日記

做相關工作的可以看下 最近不更新,等我先到新公司入職了再繼續吧。今天被優衣庫的刷屏了,我來分享點正能量吧 今天看到一篇支付寶的關於支付寶安全性的介紹,深深感覺資料分析的威力,支付寶不再單一的依靠密碼 手機號等來保證使用者資金的安全性,而是使用 安全大腦 這個安全大腦會不斷學習使用者的習慣,了解主人的...