1.实验一:配置后端服务器集群
1)实验目的:定义不同域名站点的后端服务器,通过域名会访问不同的后端主机
2)实验过程:
<1>在调度器server1上编写Varnish的配置文件
vim /etc/varnish/default.vcl
backend web1 { ##后端第一个服务器的名字web1
.host = "172.25.6.2"; ##后端第一个服务器的ip
.port = "80";
}
backend web2 { ##后端第一个服务器的名字web2
.host = "172.25.6.3"; ##后端第二个服务器的ip
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1; ##当访问www.westos.org的时候从web1上获取数据
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2; ##当访问bbs.westos.org域名时从web2上获取数据
} else {error 404 "westos cache";
}
}
/etc/init.d/varnish reload ##重启服务
<2>修改server2和server3的默认发布页面
yum install -y httpd
vim /var/www/html/index.html
<3>在客户端(这里的客户端指物理机)进行地址解析
vim /etc/hosts
<4>测试
2.实验二:使用Varnish实现负载均衡
1)实验目的:让客户端访问www.westos.org的时候,server2和server3轮循响应客户端的请求;访问bbs.westos.org时,只在server3
2)实验过程:
<1>调度器server1上编写/varnish配置文件
vim /etc/varnish/default.vcl
7 backend web1 {
8 .host = "172.25.8.2";
9 .port = "80";
10 }
11
12 backend web2 {
13 .host = "172.25.8.3";
14 .port = "80";
15 }
16
17 director lb round-robin{ #设定负载均衡(指定算法:轮循)
18 { .backend = web1;}
19 { .backend = web2;}
20 }
21 sub vcl_recv {
22 if(req.http.host ~"^(www.)?westos.org") {
23 set req.http.host = "www.westos.org";
24 set req.backend = lb; #指定轮循算法的定义名
25 return (pass); #关闭varnish缓存功能
26 }elsif (req.http.host ~"^bbs.westos.org"){
27 set req.backend = web2;
28 }else {
29 error 404 "error";
30 }
31 }
/etc/init.d/varnish reload ##重新加载服务
<2>清理缓存,再次进行测试
varnishadm ban.url .*$
<3>测试
curl www.westos.org ##由server2、server3轮循响应客户端请求
curl bbs.westos.org ##只有server3响应
连续两次访问www.westos.org,均是直接由后端服务器提供的数据,
3.实验三:后端服务器server3的虚拟主机配置(在实验二的基础上进行)
1)在server3上进行配置
vim /etc/httpd/conf/httpd.conf ##再文件末尾补充
NameVirtualHost *:80 ##990行取消注释,开启虚拟主机功能
建立虚拟主机的发布目录
/etc/init.d/httpd restart ##重启服务
2)测试:
访问 www.westos.org,虚拟主机1与server2轮循响应请求,因为虚拟主机1的ServerName为 www.westos.org
4.CDN推送平台搭建——web界面批量清除缓存
1)在调度器server1上安装相关服务
yum install php unzip -y
2)官网下载安装包bansys.zip,解压到指定目录下
unzip bansys.zip -d /var/www/html/
cd /var/www/html/
mv * ../
rm -rf bansys/
3)
vim config.php
<?php
//varnish主机列表
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.6.1'),
'port' => '8080',
);
//varnish群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
//varnish版本
//2.x和3.x推送命令不一样
$VAR_VERSION = "3";
?>
注意:这里定义的主机列表中有端口的设置,这个端口时httpd的端口,默认是80,但是我们的80端口已经被varnish占用,所以现在让httpd使用8080端口
4)修改httpd的默认端口,开启服务,查看端口是否开启
vim /etc/httpd/conf/httpd.conf
/etc/init.d/httpd restart ##重启服务
netstat -tnlp ##查看httpd的端口,是否更改生效
5)打开浏览器测试平台是否搭建完成
6)编辑varnish的默认配置文件,添加访问控制(那个网段的ip可以访问),编辑完后reload服务
vim /etc/varnish/default.vcl
acl westos {
#设置访问控制
"127.0.0.1";
"172.25.6.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";
}
}
注意: 前面的实验中为了测试效果没有保留缓存,在这一实验中将return(pass);注释掉,让调度器上的缓存保留下来
/etc/init.d/varnish reload
7)利用推送平台管理之前可以看到访问到的资源是从调度器中的缓存得到的
8)利用推送平台中清除后端服务器的所有缓存
9)在客户端再次访问网页,查看调度器上的缓存有没有被清除掉
实验成功!??