cdn服务之varnish

varnish

介绍:varinsh是一款高性能的开源HTTP加速器,与一般的服务软件类似,就是一个web缓存代理器,分为master(manager)进程和child(worker,做cache工作).master进程读入命令,进行一些初始化,然后fork并监控child进程
child进程分配若干线程进行工作,包括一些管理线程和很多worker线程

工作原理(与squid类似,速度更高):请求varnish服务器的过程首先查看自己的缓存区,如
果命中,则直接返回给请求者,没有的话则去后端服务器去取数据,将取到的数据返回给请
求者,同时自己保留一份,当在遇到这样的请求可以直接发送给请求者,减小了后端服务器
的压力,varnish默认保存时间为120s,超过时间会清空,可根据实际的需要在varnish的配置
文件中修改停留时间

1,环境:

实验主机需要三台
server1 172.25.254.1  varnish
server2 172.25.254.2  apache
server3 172.25.254.3  apache

2,varnish部署:

server1:下载安装varnish安装包(依赖性文件一起安装)
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm
yum install varnish-3.0.5-1.el6.x86_64.rp

cdn服务之varnish

 

修改监听端口为80(与http端口冲突可以修改http服务端口服务为8080)
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80

cdn服务之varnish

更改varnish配置文件/etc/varnish/defaul.vcl

cdn服务之varnishcdn服务之varnish

配置一个后端服务器,并重新加载服务

敲重点:修改过配值文件就要重新加载cdn服务之varnish


srerver2上安装apache服务,并编写测试页面
测试:(物理机/etc/hosts上要有server2的解析)效果如图

cdn服务之varnish

实验二:测试缓存命中情况

修改server1的配置文件即可

cdn服务之varnish

重启服务
/etc/init.d/varnish restart

cdn服务之varnish
测试:

cdn服务之varnish

测试机上可以写本地解析vim /etc/hosts

cdn服务之varnish

测试效果:

cdn服务之varnish

注意:图中第一次并没有缓存所有MISS from westos cache
第二次显示HTTP from westos cache


补充1:可以通过varnishadm手动清除缓存
varnishadm ban.url .*$             清除所有
varnishadm ban.url /index.html   清除页面缓存
varnishadm ban.url /admin/$      清除目录缓存
补充2:访问curl -I 172.25.254.1和curl -I 172.25.254.1/index.html效果时一样的
但是这两条命令在缓存区生成不同的缓存
清除了页面缓存curl -I 172.25.254.1也会显示命中,
而执行curl -I 172.25.254.1/index.html会显示不命中

实验三:定义多个不同站点的后端服务器

1)server1上在原先的配置上再添一个后端服务器

cdn服务之varnish

cdn服务之varnishcdn服务之varnish

服务器端务必重启

cdn服务之varnish

2)仿照server2的设置,在每一个后端服务器上安装http并编写测试页面
这里添加一个后端服务器server3,发布目录如下

cdn服务之varnish

3)测试机:(在测试机上对新添加的后端服务器进行解析)
172.25.254.1 www.westos.org www.linux.org
测试结果:

cdn服务之varnishcdn服务之varnish

注意:直接访问ip不可以

cdn服务之varnish

实验四:定义负载均衡和健康检查

配置后端服务器:

cdn服务之varnishcdn服务之varnish

 

cdn服务之varnish

测试结果:
curl www.westos.org
cdn服务之varnish

补充1:配置这里,可以更改server1中的varnish配置文件,在set req.backend=lb下添加
return(pass),使得varnish缓存功能失效,客户端直接去后端获取内容,可以获得很好的
测试对比效果
补充2:此时关闭serer2的http服务,curl会一直读取server3相应的index.html内容不会报错,因为varnish有自动的健康检查功能

 

实验五:varnish cdn推送平台
1)server1需要安装apache服务
修改http的访问端口为8080,避免与varnish服务器的端口冲突

cdn服务之varnish
修改完成以后重启服务即可
yum install unzip
unzip bansys.zip -d /var/www/html/解压到发布目录cdn服务之varnish

server1:安装php
cd /var/www/html/bansys
vim config.php

cdn服务之varnish

配置文件:只保留如下内容(需要varnish 群组定义;对主机列表进行绑定)

cdn服务之varnish

cdn服务之varnish

cdn服务之varnish

server1编辑配置文件

cdn服务之varnish

 

cdn服务之varnish

重启varnish 服务

测试:在物理机上火狐浏览器上输入172.25.254.1:8080即可进入推送平台