#################varnish#################
主机环境: rhel6 selinux and iptables disabled
实验主机: 172.25.254.11 varnish
172.25.254.12 apache
172.25.254.13 apache
处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
1. 安装
yum install -y varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
2.配置
(1)配置一个后端服务器
准备工作:如果火墙没有关闭,将其关闭,打开其它两个服务器并装上httpd并打开
[root@server1 ~]# vim /etc/varnish/default.vcl
在12主机/var/www/html下编写index.html文件做为测试网页
[root@server1 ~]# vim /etc/sysconfig/varnish
66 VARNISH_LISTEN_PORT=80
[root@server1 ~]# /etc/init.d/varnish start
测试:
(2)查看缓存命中情况
[root@server1 bansys]# /etc/init.d/varnish reload
(3)定义多个不同域名站点后端服务器
#当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,访问其他页面报错。
[root@server1 ~]# /etc/init.d/varnish reload
测试:
(4)定义负载均衡
[root@server1 ~]# /etc/init.d/varnish reload
[root@server2 html]# mkdir /www/bbs -p
[root@server2 html]# mkdir /www/westos
mkdir: cannot create directory `/www/westos': File exists
[root@server2 html]# cd /www/bbs
[root@server2 bbs]# ls
Index.html
bbs.wesstoss.org
[root@server2 bbs]# vim *
[root@server2 bbs]# cd ..
[root@server2 www]# cd westos/
[root@server2 westos]# ls
Index.html
server2www.westos.org
[root@server2 westos]# vim *
[root@server2 westos]# /etc/init.d/httpd restart
[root@server3 ~]# cd /var/www/html
[root@server3 html]# ls
index.html
[root@server3 html]# vim *
server3www.westos.org
### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$ #清除所有
# varnishadm ban.url /index.html #清除 index.html 页面缓存
# varnishadm ban.url /admin/$ #清除 admin 目录缓存
注:每次测试时清除上一次的varnish的缓存,如果不进行缓存的话在配置时加上return(pass);
测试:
(5)varnish cdn 推送平台
[root@server1 ~]# yum reinstall -y php
[root@server1 ~]# unzip bansys.zip -d /var/www/html
[root@server1 ~]# cd /var/www/html
[root@server1 html]# ls
bansys class_socket.php config.php index.php purge_action.php static
[root@server1 html]# cd bansys/
[root@server1 bansys]# ls
class_socket.php config.php index.php purge_action.php static
[root@server1 bansys]# vim config.php
[root@server1 ~]# vim /etc/varnish/default.vcl
[root@server1 bansys]# /etc/init.d/varnish reload
测试: