#################varnish#################php
主机环境: rhel6 selinux and iptables disabledhtml
实验主机: 172.25.254.11 varnishlinux
172.25.254.12 apacheweb
172.25.254.13 apacheapache
处理过程大体分为以下几个步骤:vim
(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
<h1>bbs.wesstoss.org</h1>
[root@server2 bbs]# vim *
[root@server2 bbs]# cd ..
[root@server2 www]# cd westos/
[root@server2 westos]# ls
Index.html
<h1>server2www.westos.org</h1>
[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 *
<h1>server3www.westos.org</h1>
### 经过 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
测试: