一.安装
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
下载安装并开启server2、server3的http服务
二.配置
1.server1 做后端服务器
(1)在/etc/sysconfig/varnish中更改varnish服务端口
打开服务: service varnish start
(2)在/etc/varnish/default.vcl中
1)配置一个后端服务器
修改安全限制文件(保证流量大时,服务正常运行)
打开文件的最大数,有如下关系:内核操作> 操作系统> 软件
内核允许的打开文件最大数:
varnish软件允许打开的最大文件数:vim /etc/sysconfig/varnish
在server2主机上:
[root@server2 ~]# yum install httpd -y # 下载httpd
[root@server2 ~]# /etc/init.d/httpd start #开启httpd服务
[root@server2 ~]# cd /var/www/html
[root@server2 html]# vim index.html #写入解析
写入:server2
在物理主机上:
浏览器中输入varnish服务器的ip地址(172.25.0.116),访问到解析。
2.查看缓存命中情况
(1)在server1(varnish服务端)
[root@server1 varnish]# vim /etc/sysconfig/default.vcl
写入:
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = “HIT from westos cache”;
}
else {
set resp.http.X-Cache = “MISS from westos cache”;
}
return (deliver);
}
/etc/init.d/varnish restart —重启服务
(2) 在客户端(真机)添加本地解析
写入:172.25.0.116 www.westos.org
(3) 在真机添加本地解析后就可以进行访问测试。
注意:varnish的默认缓存时间为120s,超过120s就会自动清除缓存。
我们也可以通过varnishadm手动清除缓存。
在varnish服务端(server1)清除缓存,然后在客户端(真机)进行测试
在server1上手动清除缓存
### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$ #清除所有
# varnishadm ban.url /index.html #清除 index.html 页面缓存
# varnishadm ban.url /admin/$ #清除 admin 目录缓存
3.定义多个不同域名站点的后端服务器
在server1(varnish服务端)主机上:
(1)修改默认源代码为:
[root@server1 varnish]# cd /etc/varnish
[root@server1 varnish]# vim default.vcl
#当访问 www.westos.org 域名时从 web1 上取数据,访问 www.linux.org 域名时到 web2 取数据,
访问其他页面报错。
1)在server1上清除缓存,重新加载varnish软件服务。
2)在主机server2/3配置网络服务器 , 开启httpd服务,编写测试页并重启服务
root@server2 ~]# vim /var/www/html/index.html
在物理主机上加入解析
测试:
真机测试www.westos.org www.linux.org
访问其他页面
三.健康状况检查
把多个后端聚合为一个组,并检测后端健康状况
1)server1在/etc/varnihsi/default.vcl加入:
director lb round-robin {
{.backend = web1;}
{.backend = web2;}
}
}sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
return (pass);
#为了测试方便,不进行缓存。
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}
# service varnish reload
2)在server3 中 修改 httpd 的配置文件
在 server3 中 再添加一个访问目录
打开端口NameVirtualHost *:80。
3)server3添加解析 重启httpd服务
在server3上进行测试
4)在server2主机上:修改访问文件index.html
5)在server1主机(后端服务器)上:
为了方便,不进行缓存 添加 route (pass)
6)重新启动server2/3的httpd server1的varnish
/etc/init.d/varnish reload
varnishadm ban.url /index.html #清空index.html页面缓存120后从0开始
7)真机测试查看是否可以进行健康检查
网页中测试:
在物理主机上测试:这个效果使添加了 return (pass) 表示不进行缓存,注释掉不会交替出现
注释之后:
在实验中物理机和虚拟机的火墙要关闭,httpd服务要打开。若stop掉server2或server3的httpd,再测试时,会只访问正常的服务器,这就证明了varnish具有健康检查的功能。
四.搭建CDN推送平台。
server1:推送平台
(1)开启httpd服务及varnish服务。
(2)因为varnish占用的80端口,所以修改httpd的端口为8080并重启服务
2)安装php服务,unzip解压命令
下载并压缩bansys包及安装服务,把解压后的文件放入apache默认发布目录 。
#只保留如下设置,其余注释掉
网页访问172.25.0.116:8080
bansys 有两种工作模式,分别是:telnet 和 http 模式。
telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。
3)如果是 http 模式需要对 varnish 做以下设置:
设置acl访问控制
# vi /etc/varnish/default.vcl
acl westos {
"127.0.0.1";
"172.25.0.0"/24;
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
# service varnish reload
客户端测试
没有推送前:
推送后:
以此类推,每推送一次,就会将网址更新一次.