安装
下载varnish的rpm包
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm varnish-3.0.5-1.el6.x86_64.rpm -y
配置
vim /etc/varnish/default.vcl
#配置一个后端服务器
backend web1 {
.host = "172.25.15.2";
.port = "80";
}
#查看缓存命中情况
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);
}
配置 varnish 服务端口
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
service varnish start #启动varnish
测试
在172.25.15.2主机上的配置:
vim /etc.hosts #配置解析
172.25.15.1 server1 www.westos.com
echo "server2" >/var/www/html/index/html
测试
curl -I www.westos.com
curl -I www.westos.com
第一次缓存未命中,在以后的120秒(默认时间)都显示命中
可通过 varnishadm 手动清除缓存
varnishadm ban.url .*$ #清除所有
varnishadm ban.url /index.html #清除 index.html 页面缓存
varnishadm ban.url /admin/$ #清除 admin 目录缓存
配置负载均衡
varnish配置
vim /etc/varnish/default.vcl
#配置后端服务器
backend web1 {
.host = "172.25.15.2";
.port = "80";
}
backend web2 {
.host = "172.25.15.3";
.port = "80";
}
#把多个后端聚合为一个组
director lb round-robin{
{.backend = web1;}
{.backend = web2;}
}
#当访问 www.westos.org 域名时从 lb组 上取数据(本配置中,web1,web2都在lb组),访问 bbs.westos.org 域名时到 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";
}
}
#查看缓存命中情况
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);
}
测试
在172.25.254.15真机上的配置:
vim /etc.hosts #配置解析
172.25.15.1 server1 www.westos.com
测试:
for i in {1..10};do curl www.westos.org;done
轮流访问lb组内web1、web2的http网页