Varnish代理服務器
Varnish是什麼?
Varnish是一款高性能的開源HTTP加速器,其主要用來做爲反向代理中的緩存服務器使用,varnish的設計架構就是利用操作系統的緩存機制處理訪問
varnish與squid的區別:
Varnish與Squid都是一個反向代理服務器,都可用作高性能的代理緩存服務器,並且都是開源軟件
1.Varnish穩定性很高,squid相比varnish故障機率大
2.Varnish訪問速度更快,所有緩存數據都直接從內存讀取,而Squid從硬盤讀取緩存數據
3.Varnish支持更多的併發連接,因爲Varnish的TCP連接釋放要比Squid快
4.Varnish可以通過管理端口,使用正則表達式批量清除部分緩存,而Squid不能
5.Varnish進程一旦掛起、崩潰或者重啓,緩存數據都會從內存中完全釋放,此時所有請求都會被髮送到後端服務器,在高併發情況下,這會給後端服務器造成很大壓力
6.Varnish配置相比Squid簡單,監控接口豐富,性能好,但Squid資料多,功能豐富,支持對ACL的訪問控制
安裝配置varnish反向代理服務器
客戶端:本機192.168.0.100
代理服務器:192.168.0.105
網頁服務器:192.168.0.101
1.安裝相關支持包
yum -y install gcc readline-devel ncurses-devel pcre-devel python-docutils libtoollibxslt groff pkgconfig libedit-devel
2.編譯安裝varnish
tar zxf varnish-4.0.5.tar.gz
cd varnish-4.0.5
./configure --prefix=/usr/local/varnish --enable-debugging-symbols
make && make install
3.路徑優化
ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
ln -s /usr/local/varnish/bin/* /usr/bin/
4.複製配置文件模板並使用修改配置文件
cp /usr/local/varnish/share/doc/varnish/example.vcl /usr/local/varnish/default.vcl
vim /usr/local/varnish/default.vcl
修改成代理的IP地址和端口
5.啓動服務訪問代理服務器測試
varnishd -f /usr/local/varnish/default.vcl
varnish負載均衡羣集
客戶端:本機192.168.0.100
代理服務器:192.168.0.105
網頁服務器1:192.168.0.101
網頁服務器2:192.168.0.102
1.修改配置文件
vim /usr/local/varnish/default.vcl
4.0版本後將director編寫爲varnish的模塊
import directors; \\加載directors模塊
#添加後端真實服務器
backend web1 {
.host = "192.168.0.101";
.port = "80";
}
backend web2 {
.host = "192.168.0.102";
.port = "80";
}
#初始化模塊,定義director
sub vcl_init {
new bar = directors.round_robin(); \\定義調度算法, random dns
bar.add_backend(web1);
bar.add_backend(web2);
}
#設置緩存配置
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.
set req.backend_hint = bar.backend(); \\把流量轉發給directors
return(pass); \\設置不進行緩存
}
啓動服務訪問代理服務器ip
點擊刷新頁面跳轉到另一臺服務器的頁面
補充:添加健康檢查配置
修改配置文件: vim /usr/local/varnish/default.vcl
backend web1 {
.host = "192.168.0.101";
.port = "80";
.probe = { //開啓健康檢查
.url = "/"; //請求的URL路徑
.interval = 5s; //查詢間隔時間
.timeout = 1s; //超時時間
.window = 5; //varnish保持的結果滑動窗口,該滑動窗口是一種流量控制方法,允許發送方在停止並等待確認前可以連續發送多個分組。由於發送方不必每發送一個分組就停下來等待確認,所有此協議可以加速數據傳輸
.threshold = 3; //上次檢查.window數量的多少,才代表後端是健康的
}
}
重啓服務測試