Varnish 導(dǎo)覽

編譯自(有時會添加自己的話艳汽,可能不會明顯標(biāo)記出來):
https://www.varnish-cache.org/docs/4.0/tutorial/index.html

本文檔包含基本的主題:Varnish 是什么,Varnish 是怎么工作的递鹉。

目錄:

  • Varnish 緩存代理的基本原理
  • 支持的平臺
  • Varnish 開發(fā)進(jìn)度
  • Getting in touch
  • 啟動 Varnish
  • 讓 Varnish 監(jiān)聽在 80 端口
  • 后端服務(wù)器
  • 特性
  • Now what

Varnish 緩存代理的基本原理


Varnish 是一個 HTTP 緩存代理弓候,它從 client 接受請求郎哭,并嘗試從緩存中響應(yīng)請求。如果無法從緩存中提供響應(yīng)弓叛,Varnish 向后端服務(wù)器發(fā)起請求彰居,獲取響應(yīng),將響應(yīng)存儲在緩存中撰筷,然后把響應(yīng)發(fā)送給 client陈惰。

如果 Varnish 能夠從 Cache 中響應(yīng)一個請求,所消耗的時間是微秒級別的毕籽,這個響應(yīng)速度比直接從 HTTP 服務(wù)器響應(yīng)請求的速度要快兩個數(shù)量級抬闯,所以緩存命中率越高,網(wǎng)站的訪問速度就越快关筒。

根據(jù)從后端服務(wù)器獲取的 HTTP 響應(yīng)溶握,Varnish 會決定是否對其進(jìn)行緩存。后端服務(wù)器可以使用 response header Cache-Control 主動告訴 Varnish 緩存這個響應(yīng)蒸播。有幾種情況 Varnish 是不緩存響應(yīng)的睡榆,最典型的情況萍肆,是 HTTP 響應(yīng)中使用了 cookies,因為 cookie 是關(guān)于某個特定用戶的胀屿,所以緩存意義不大塘揣,Varnish 默認(rèn)不緩存這樣的響應(yīng)。

使用 Varnish 配置語言 - Varnish Configuration Language (VCL)宿崭,可對 Varnish 的行為和功能進(jìn)行配置亲铡,詳細(xì)的介紹參考 Varnish Users Guide。

性能


Varnish 擁有現(xiàn)代的架構(gòu)葡兑,設(shè)計時著眼于性能奖蔓。性能通常只與網(wǎng)絡(luò)的速度相關(guān),有效的性能調(diào)優(yōu)不是很重要讹堤。你可將注意力放在配置 web 的工作上吆鹤,對于性能和可擴(kuò)展性則不需要太關(guān)心。

靈活性


Varnish 除了其優(yōu)秀的性能洲守,另一個最大的特性是其配置語言的靈活性檀头。使用 VCL 寫的規(guī)則,讓你可以對入站的請求進(jìn)行控制岖沛。比如,選擇提供什么樣的內(nèi)容服務(wù)搭独,從哪里獲取內(nèi)容婴削,請求和響應(yīng)將被如何修改。

支持的平臺


Varnish 支持 Linux 和 FreeBSD 以及 OS X 等其他操作系統(tǒng)牙肝。

Varnish 開發(fā)進(jìn)度


Varnish 是一個社區(qū)驅(qū)動的項目..

Getting in touch


聯(lián)系方式..

啟動 Varnish


本小節(jié)適用于: Ubuntu, Debian, Red Hat Enterprise Linux or CentOS.

安裝好 Varnish 之后唉俗,啟動 Varnish:service varnish start

現(xiàn)在 Varnish 已經(jīng)啟動了配椭。我們來確認(rèn)一下虫溜,使用瀏覽器訪問 http://127.0.0.1:6081/,注意將 IP 地址替換為你的運行 Varnish 的機(jī)器的 IP地址股缸。根據(jù)默認(rèn)的配置衡楞,Varnish 會嘗試將請求轉(zhuǎn)發(fā)到一個 web 應(yīng)用,默認(rèn)轉(zhuǎn)發(fā)給本機(jī)的 8080 端口:http://127.0.0.1:8080敦姻。

如果沒有 web 應(yīng)用在 http://127.0.0.1:8080 運行瘾境,Varnish 會返回一個錯誤。Varnish 對于返回錯誤信息總是很謹(jǐn)慎的镰惦,不管是什么錯誤迷守,Varnish 總是返回 "Error 503 Service Unavailable"。

可能你的 web 應(yīng)用跑在其他地址上旺入,讓我們修改配置文件兑凿,指向這些 web 應(yīng)用凯力。

使用你最喜歡的編輯器打開 /etc/varnish/default.vcl 文件。其中多數(shù)被注釋了礼华,其中可能有如下內(nèi)容:

vcl 4.0;

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

我們可以修改它咐鹤,使其指向你的 web 服務(wù)器。我們這里使用 http://www.varnish-cache.org/

vcl 4.0;

backend default {
    .host = "varnish-cache.org";
    .port = "80";
}

現(xiàn)在執(zhí)行 service varnish reload 重新加載配置文件卓嫂,如果成功了慷暂,使用瀏覽器訪問 http://127.0.0.1:6081/,(記得替換IP地址),你會看見一個目錄列表晨雳。為什么是看到目錄列表呢行瑞,因為你的 client 沒有發(fā)送適當(dāng)?shù)?Host header,所以顯示默認(rèn)的 webfolder餐禁。

讓 Varnish 監(jiān)聽在 80 端口


現(xiàn)在我們的 Varnish 監(jiān)聽于 6081 端口血久,這個端口用于調(diào)試是不錯的。我們現(xiàn)在讓 Varnish 監(jiān)聽在 HTTP 的默認(rèn)端口: 80 端口帮非。

首先關(guān)閉 Varnish:service varnish stop

現(xiàn)在我們需要編輯啟動 Varnish 的配置文件:

Debian/Ubuntu

On Debian/Ubuntu this is /etc/default/varnish. In the file you'll find some text that looks like this:

DAEMON_OPTS="-a :6081
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,256m"
Change it to:

DAEMON_OPTS="-a :80
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,256m"

Red Hat Enterprise Linux / CentOS

在 RHEL/CentOS 上氧吐,配置文件是 /etc/sysconfig/varnish,除了上面這種配置末盔,另外還有一種參數(shù)配置的方法:

#VARNISH_LISTEN_ADDRESS=
VARNISH_LISTEN_PORT=80

不指定 VARNISH_LISTEN_ADDRESS筑舅,表示監(jiān)聽本地所有地址。這些參數(shù)會被引用:

DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
             -f ${VARNISH_VCL_CONF} \
             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -p thread_pool_min=${VARNISH_MIN_THREADS} \
             -p thread_pool_max=${VARNISH_MAX_THREADS} \
             -p thread_pool_timeout=${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -S ${VARNISH_SECRET_FILE} \
             -s ${VARNISH_STORAGE}"

重啟 Varnish: service varnish start

現(xiàn)在 Varnish 就會監(jiān)聽在 80 端口了陨舱。

現(xiàn)在所有對你的站點的訪問翠拣,都會經(jīng)過 Varnish 的處理。

后端服務(wù)器


在 Varnish 中有 backend servers 或者 origin servers 的概念游盲,可稱之為后端 web 服務(wù)器误墓。后端 web 服務(wù)器通過 Varnish 的緩存功能對訪問進(jìn)行加速。

我們來編輯配置文件益缎,如果是編譯安裝谜慌,路徑為 /usr/local/etc/varnish/default.vcl,如果是軟件包安裝莺奔,路徑為 /etc/varnish/default.vcl欣范。

剛才我們已經(jīng)編輯過:

vcl 4.0;

backend default {
    .host = "www.varnish-cache.org";
    .port = "80";
}

這表示 Varnish 為 http://www.varnish-cache.org:80 做緩存代理。

現(xiàn)在配置 Varnish 為自己的 web 應(yīng)用的緩存代理弊仪。剛才我們已經(jīng)配置 Varnish 監(jiān)聽于 80 端口熙卡,現(xiàn)在配置后端服務(wù)器地址:

vcl 4.0;

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

Varnish 可定義多個后端服務(wù)器,并且可以聯(lián)合多個后端服務(wù)器為一個后端集群励饵,進(jìn)行負(fù)載均衡驳癌。

下面我們看看 Varnish 的特別之處,以及如何利用這些特性役听。

特性


Varnish 跟其他程序相比有一些特別的特性颓鲜,其中一個我們已經(jīng)介紹過 - VCL表窘。下面我們將快速過一下其他重要的特性:

Configuration

Varnish 的配置使用 VCL 編寫。Varnish 啟動時甜滨,其配置被轉(zhuǎn)換為 C 代碼乐严,然后交給 C 編譯器編譯,然后被加載和執(zhí)行衣摩。

所以昂验,與其他程序的配置不同,Varnish 的配置不是打開或關(guān)閉某些選項艾扮,而是使用 VCL 編寫對入站訪問流量的處理策略既琴。

varnishadm

Varnish 擁有一個 admin console,你可以通過 varnishadm 命令連接該 console泡嘴。為了進(jìn)行連接認(rèn)證甫恩,執(zhí)行 varnishadm 命令的用戶必須對 /etc/varnish/secret 文件有可讀權(quán)限。

一旦啟動了 console酌予,你可對 Varnish 做一些操作磺箕。比如:啟動或關(guān)閉 cache 進(jìn)程,加載 VCL抛虫,調(diào)整負(fù)載均衡策略松靡,調(diào)整失效的緩存內(nèi)容。

通過內(nèi)置命令 help建椰,可獲取操作的幫助击困。

varnishlog

Varnish 的日志不會存入磁盤,而是存入一塊內(nèi)存空間中广凸。Varnish 的日志被“流式化”。任何時候蛛枚,你都可以連接到日志流谅海,查看正在發(fā)生什么。Varnish 日志會記錄很多信息蹦浦,可以通過 varnishlog 命令查看日志流扭吁。

Now what


本文檔的介紹到此結(jié)束,下面我們可以學(xué)習(xí) Varnish Users Guide盲镶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侥袜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溉贿,更是在濱河造成了極大的恐慌枫吧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宇色,死亡現(xiàn)場離奇詭異九杂,居然都是意外死亡颁湖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門例隆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甥捺,“玉大人,你說我怎么就攤上這事镀层×蹋” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵唱逢,是天一觀的道長吴侦。 經(jīng)常有香客問我,道長惶我,這世上最難降的妖魔是什么妈倔? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮绸贡,結(jié)果婚禮上盯蝴,老公的妹妹穿的比我還像新娘。我一直安慰自己听怕,他們只是感情好捧挺,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尿瞭,像睡著了一般闽烙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上声搁,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天黑竞,我揣著相機(jī)與錄音,去河邊找鬼疏旨。 笑死很魂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的檐涝。 我是一名探鬼主播遏匆,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谁榜!你這毒婦竟也來了幅聘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤窃植,失蹤者是張志新(化名)和其女友劉穎帝蒿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巷怜,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡陵叽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年狞尔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巩掺。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡偏序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胖替,到底是詐尸還是另有隱情研儒,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布独令,位于F島的核電站端朵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏燃箭。R本人自食惡果不足惜冲呢,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望招狸。 院中可真熱鬧敬拓,春花似錦、人聲如沸裙戏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽累榜。三九已至营勤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間壹罚,已是汗流浹背葛作。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留猖凛,地道東北人进鸠。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像形病,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霞幅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 緩存的基礎(chǔ)知識 1漠吻、程序本身具有局部性 時間局部性過去訪問到的數(shù)據(jù),也有可能被兩次訪問 空間局部性一個數(shù)據(jù)被訪問到...
    魏鎮(zhèn)坪閱讀 2,038評論 1 3
  • 本文編譯自:users-guide 本節(jié)講述如何使用 VCL 編寫處理 HTTP 流量的策略司恳。 Varnish 的...
    C86guli閱讀 3,189評論 0 1
  • 1.介紹 運維日常: 2.Web Page Cache: varnish2.0,3.0處理過程 varnish4....
    尛尛大尹閱讀 3,365評論 0 0
  • 華盛頓最大的旅游資源就是大大小小途乃、各式各樣的免費博物館。因為一般的博物館都是每天早上10:00開門扔傅,每天出行的時間...
    LilyRen閱讀 421評論 0 0
  • 最近在看一部小說耍共,不明白為何女主和男二都準(zhǔn)備在一起結(jié)婚了烫饼,但后來還是分開了,因為不合適试读。這個不合適杠纵,不是因為作者的...
    雍雍吶閱讀 213評論 0 0