varnish主要用于緩存伺服器,還有一些其他軟體也能實作緩存功能,例如memcached但是它主要緩存的是數值資料,适用于緩存mysql的資料;而nginx也有緩存功能,也可在反代時為後端主機提供緩存,但是nginx常用于反代伺服器使用,也不建議一個主機承載多任務工作,這樣會代理性能降低;而varnish正是常作為http協定的反代工作的。
現代網際網路服務,為了提供使用者良好的體驗,通路網站打開頁面的速度要求非常快,是以各網站基本都把資源盡量放在用戶端最近的通路節點上,即常說的把資源推送到使用者的家門口。實作方式常用的有兩種方式:一種是使用CDN,另一種就是把使用者請求都指向一個入口,在客戶請求的入口處部署緩存伺服器,把熱點資源都放在離使用者最近的緩存伺服器上。varnish就工作在第二種方式中,當做緩存伺服器給使用者帶來良好的通路體驗的。
同樣功能的還有一款軟體squid,與varnish的關系,相當于httpd與nginx的關系;squid出現比較早,但面臨較大負載時工作非常穩定,且功能豐富,同時支援正向、反向代理;varnish是比較輕量,主要用來實作反代;但超過承受的負載時,可能很不穩定;
安裝varnish:
]# yum install varnish
安裝varnish的文檔包
]# yum -y install varnish-docs
varnish主機:172.18.11.111
後端web主機:
RS1:172.18.11.11
RS2:172.18.11.12
varnish主機:
]# vim /etc/varnish/default.vcl
<a href="http://s5.51cto.com/wyfs02/M01/82/11/wKiom1dJt9ah8ONbAAB6u8Tq3vI776.png" target="_blank"></a>
]# vim /etc/varnish/varnish.params
<a href="http://s2.51cto.com/wyfs02/M01/82/0F/wKioL1dJuUTQQ6hHAACgRIlcJjI092.png" target="_blank"></a>
啟動varnish專用指令行:
]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
vcl.load test1 default.vcl
顯示:
<a href="http://s2.51cto.com/wyfs02/M02/82/0F/wKioL1dJulHCIk9nAAAIpP5CDsU360.png" target="_blank"></a>
沒問題後,再輸入:
vcl.use test1
<a href="http://s5.51cto.com/wyfs02/M02/82/10/wKioL1dJuoSC2c8wAAAIbLV0KKQ594.png" target="_blank"></a>
沒問題後,可浏覽器測試。
分别在後端兩web伺服器提供測試頁:
]# vim /var/www/html/index.html
<h1>RS1 172.18.11.11</h1>
<h1>RS2 172.18.11.12</h1>
浏覽器輸入:http://172.18.11.111/
重新整理後交替顯示:
<a href="http://s1.51cto.com/wyfs02/M01/82/10/wKioL1dJu27QEblmAAA3b3YgxvY744.png" target="_blank"></a>
<a href="http://s1.51cto.com/wyfs02/M00/82/11/wKiom1dJunXyj9GyAAA0K-Vkyjs668.png" target="_blank"></a>
停掉後端一台web伺服器,繼續通路仍能提供web服務。
本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1784160,如需轉載請自行聯系原作者