Varnish-CDN(多个后端服务器)
实验环境
主机 | 用途 |
---|---|
server1 | varnish服务器(172.25.5.1) |
server2 | 后端web服务器(172.25.5.2) |
server3 | 后端服务器(172.25.5.3) |
真机 | 客户端(172.25.5.250) |
多个后端服务器的配置
1.编辑varnish的配置文件,配置后端两台服务器
vim /etc/varnish/default.vcl
[[email protected] ~]# vim /etc/varnish/default.vcl
backend web1 { # 后端第一个服务器名web1
.host = "172.25.5.2"; #将server2 www.westos.org作为第一个服务器主机
.port = "80";
}
backend web2 { # 后端第二个服务器名web2
.host = "172.25.5.3"; #将server3 bbs.westos.org作为第二个服务器主机
.port = "80";
}
#当访问 www.westos.org 或 westos.org 域名时从 web1 上取数据;
#访问 bbs.westos.org 域名时到 web2 取数据;
#访问其他,页面报错。
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
}elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}
2.重新起动服务,或者重新加载
/etc/init.d/varnish restart
/etc/init.d/varnish reload
3.在server2和server3配置http服务,并写入内容
/var/www/html/index.html
写入:<h1>server2和3.westos.com<h1>
4.测试
修改本地DNS解析
vim /etc/hosts
写入:
172.25.5.1 www.westos.org bbs.westos.org
测试:
curl www.westos.org
curl bbs.westos.org
负载均衡的配置
1.编辑varnish的配置文件
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.5.2";
.port = "80";
}
backend web2 {
.host = "172.25.5.3";
.port = "80";
}
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";
}
}
2.重起服务
/etc/init.d/varnish restart
3.清除缓存
varnishadm ban.url .*$
4.测试,访问www.westos.org时,每访问一次,后端服务器变化一次
验证varnish的缓存作用
1.配置文件
vim /etc/varnish/default.vcl
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos.cache";
} # 在varnish中命中HIT访问的域名
else {
set resp.http.X-Cache = "MISS from westos cache";
} # 后端服务器中得到MISS访问的域名
return (deliver);
}
2.重起服务,清除缓存
/etc/init.d/varnish restart
varnishadm ban.url .*$
[[email protected] ~]# varnishadm ban.url .*$ ##清除所有缓存
[[email protected] ~]# varnishadm ban.url /index.html ##清除网页的缓存
[[email protected] ~]# varnishadm ban.url /admin/$ ##清除admin 目录缓存
3.客户端测试
第一次显示没有缓存到
curl -I ww.westos.org
以后都会显示缓存到
curl -I www.westos.org
一台主机多个解析(虚拟主机)
1.在server3的httpd默认发布目录中建立两个虚拟主机
vim /etc/httpd/conf/httpd.conf
990 NameVirtualHost *:80 ##打开注释
##在最后编辑:
<VirtualHost *:80>
DocumentRoot /www #虚拟机的存储地址
ServerName www.westos.org #虚拟机名称
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
2.创建目录/www和/bbs,并编辑相应的前端文件
[[email protected] ~]# mkdir /www
[[email protected] ~]# mkdir /bbs
[[email protected] ~]# cd /www
[[email protected] www]# vim index.html
<h1>www.westos.org - server3</h1>
[[email protected] www]# cd /bbs
[[email protected] bbs]# vim index.html
<h1>bbs.westos.org - server3</h1>
3.重起httpd服务
/etc/init.d/httpd restart
4.测试:
在客户端添加解析,并测试
vim /etc/hosts
写入:
172.25.5.1 server1
172.25.5.3 www.westos.org bbs.westos.org
访问测试:
[[email protected] ~]# curl www.westos.org
<h1>www.westos.org - server3</h1>
[[email protected] ~]# curl bbs.westos.org
<h1>bbs.westos.org - server3</h1>