Vainish是一款高性能且開源的反向代理服務器和http加速器。
與傳統的squid相比,Varnish具有性能更高、速度更快等諸多優點。
Varnish服務器
--/etc/varnish #配置文件目錄
/etc/init.d/varnish #varnish的啓動程序
/etc/sysconfig/varnish #配置文件,varnish定義自身屬性
/etc/varnish/default.vcl #默認配置文件,定義後端節點
--/usr/bin/varnishadm #客戶端程序
--/usr/bin/varnishstat #狀態監控
使用Varnish加速Web
通過配置Varnish緩存服務器,實現如下目標:
1,使用Varnish加速後端Apache Web服務
2,使用varnishadm命令管理緩存頁面
3,使用varnishstat命令查看Varnish狀態
方案
1,通過源碼編譯安裝Varnish緩存服務器
2,編譯安裝Varnish軟件
3,複製啓動腳本與配置文件
使用3臺RHEL7虛擬機,其中一臺作爲varnish服務器,
該服務器用來連接兩個網段,因此需要配置兩塊網卡,
地址分別爲192.168.4.5和192.168.2.5
一臺作爲客戶端測試主機,IP地址爲192.168.4.100。
一臺Web服務器,地址爲192.168.2.100,
該Web服務器爲其他代理提供Web數據源。
步驟
步驟一:構建Web服務器
1)使用yum安裝web軟件包
[root@web1 ~]# yum -y install httpd
2)啓用httpd服務,並設爲開機自動運行
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# systemctl enable httpd
3)爲Web訪問建立測試文件
[root@web1 ~]#echo "i am 192.168.2.100"
步驟二:部署Varnish緩存服務器
1)編譯安裝軟件
[root@svr5 ~]#yum -y install gcc readline-devel pcre-devel //安裝軟件依賴包
[root@svr5 ~]# useradd -s /sbin/nologin varnish //創建賬戶
[root@svr5 ~]# tar -xzf varnish-3.0.6.tar.gz
[root@svr5 ~]# cd varnish-3.0.6
[root@svr5 varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
[root@svr5 varnish-3.0.6]# make && make install
2)複製啓動腳本及配置文件
[root@svr5 varnish-3.0.6]#cd redhat/
[root@svr5 redhat]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@svr5 redhat]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
[root@svr5 redhat]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
[root@svr5 redhat]# ln -s /usr/local/varnish/bin/* /usr/bin/
3)修改Varnish文件
[root@svr5 ~]# vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80 #默認端口
89行:VARNISH_STORAGE_SIZE=64M #定義緩存大小
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #基於內存方式緩存
4)修改代理配置文件
[root@svr5 ~]# mkdir /etc/varnish
[root@svr5 ~]# cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
[root@svr5 ~]# uuidgen > /etc/varnish/secret
[root@svr5 ~]# vim /etc/varnish/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}
[root@svr5 ~]# service varnish start
步驟三:客戶端測試
[root@client ~]# curl http://192.168.4.5
其他操作
1)查看varnish日誌
[root@svr5 ~]# varnishlog //varnish日誌
[root@svr5 ~]# varnishncsa //訪問日誌,實時日誌,在客戶端訪問才能看到日誌
2)更新緩存數據,在後臺web服務器更新頁面內容後,
用戶訪問代理服務器看到的還是之前的數據,
說明緩存中的數據過期了需要更新(默認也會自動更新,但非實時更新)。
[root@svr5 ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 ban.url 頁面文件名
#清空緩存數據,支持正則表達式(非交互)
[root@svr5 ~]#varnishadm stop #停止服務
[root@svr5 ~]#varnishadm start #啓動服務
[root@svr5 ~]#varnishadm status #查看狀態
[root@svr5 ~]#varnishadm ban.url / #清空緩存
緩存過期:
1)等待更新
2)手動更新(在/etc/sysconfig/varnish查看端口以及安全文件)(交互)
varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 #進入
backend.list #查看後端的信息
ban.url .* #所有更新