#################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 

wKioL1l4mT7ihxuoAAARbmn8DEw583.png-wh_50

 

12主机/var/www/html下编写index.html文件做为测试网页

[root@server1 ~]# vim /etc/sysconfig/varnish 

  66 VARNISH_LISTEN_PORT=80

[root@server1 ~]# /etc/init.d/varnish start

 测试:

wKioL1l4mVTQMThNAAAWbKpBKYs872.png-wh_50

 

(2)查看缓存命中情况


 varnish_第1张图片


 

[root@server1 bansys]# /etc/init.d/varnish reload

 varnish_第2张图片

 

(3)定义多个不同域名站点后端服务器

varnish_第3张图片

#当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,访问其他页面报错。

 

[root@server1 ~]# /etc/init.d/varnish reload

测试:

varnish_第4张图片

wKiom1l4mkCBXaJ0AAAfsTlShEc329.png-wh_50



(4)定义负载均衡

varnish_第5张图片

[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的缓存,如果不进行缓存的话在配置时加上returnpass);

测试:

varnish_第6张图片 

(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 

varnish_第7张图片

[root@server1 ~]# vim /etc/varnish/default.vcl

varnish_第8张图片

[root@server1 bansys]# /etc/init.d/varnish reload

测试:

varnish_第9张图片