跑上nginx+varnish的結構已經有一段時間了,比較穩定,再加上這段時間主要工作是民工活(搬運等體力活),沒去關心這些東西。
忙完一段,有閒暇看看這些東西的文件和郵件列表。
原來一直覺得varnish雖然也支援round robin的後端負載均衡,但缺乏對主備系統的支援,也就是平時向後端的請求負載全部落在乙個後端服務上,當這個後端服務宕了,才落到另乙個後端服務上去。以前也轉過這個念頭,但貌似用vcl很難實現這個功能。
在varnish的wiki**上增加了這樣一條:上次看到這個東西,也沒有空去試一下。
貌似從2067就開始支援了,呵呵,以前一直沒注意到,直到上次重灌系統的時候。
於是修改了一下自己的vcl:
在recv裡增加了
if (req.restarts == 0) else
在fetch裡增加了
if (obj.status != 200 && req.restarts == 0)
這樣,如果backend1對於請求返回200,則走正常流程,否則看轉向請求backend2,如果backend2也返回200(此時req.restarts 不再是0),則轉出錯流程,不向後端重複請求。在這個配置下,我把原來apache服務也起在8080上,作為nginx的備份,平時是沒有流量的。
檢視varnish日誌,確實體現了這樣的情況
16 vcl_return c lookup
16 vcl_call c hash
16 vcl_return c hash
16 vcl_call c miss /*請求的東西在快取裡沒有*/
16 vcl_return c fetch /*於是到後端取*/
20 rxstatus b 404 /*後端1說沒這個東西*/
/*由於上次返回的是404,於是restart*/
16 vcl_call c recv
16 vcl_return c lookup
16 vcl_call c hash
16 vcl_return c hash
16 vcl_call c miss
16 vcl_return c fetch
17 backendclose backend2
/*這次是到後端2去取的*/
17 rxstatus b 404 /*還是沒有取到*/
由於是實際日誌,上面摘取的部分修改了一些資訊。
Varnish 簡單的配置
先安裝寫依賴包 以免後面報錯 automake autoconf libtool ncurses devel libxslt groff pcre devel pkgconfig ubuntu下的 libproc g 一 安裝varnish tar zxvf varnish 2.1.3.tar.gz...
CDN加速的實現 varnish
cdn的全稱 content delivery network,即內容分發網路。其基本思路是盡可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快 更穩定。通過在網路各處放置節點伺服器所構成的在現有的網際網路基礎之上的一層智慧型虛擬網路,cdn系統能夠實時地根據網路流量和各...
Varnish 負載均衡的實現
步驟一 開啟ll3快照,設定ip,主機名,yum源 準備將server4作為第二個web伺服器 這一步在上篇已經詳細介紹,在此省略 步驟二 將server4也作為乙個後端web伺服器 也就是在server4上面搭建乙個web伺服器 檢測一下 curl localhost 步驟三 在server1 伺...