Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

实验环境

主机 ip
server1(varnish服务器) 172.25.5.1
server2(后端web服务器) 172.25.5.2
server3(后端web服务器) 172.25.5.3
foundation4(客户端) 172.25.5.250

续上一篇文章

1.多个后端服务器的配置

1.编辑varnish的配置文件(配置后端两台服务器)
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

[[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.重新启动服务,或者重新加载
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

[[email protected] ~]# /etc/init.d/varnish reload

3.在server2和server3配置http服务,并且写入内容
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

3.在客户端进行测试
修改本地解析
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
测试
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

2.负载均衡的配置

1.编辑varnish的配置文件
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

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.重新启动服务
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
3.清楚缓存
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
4.在客户端进行测试,访问www.westos.org时,会出现每访问一次,会变跳
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

3.验证varnish的缓存作用

1.编辑配置文件
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
注释调上面实验的不缓存
return (pass);
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

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.重新启动服务
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
3.清除缓存
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

[[email protected] ~]# varnishadm ban.url .*$           ##清除所有缓存
[[email protected] ~]# varnishadm ban.url /index.html   ##清除网页的缓存
[[email protected] ~]# varnishadm ban.url /admin/$      ##清除admin 目录缓存

3.客户端测试
第一次显示没用缓存到
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)
以后都会显示缓存到了
Varnish—CDN加速的实现(多个后端服务器以及实现负载均衡以及虚拟主机)

4.一台主机多个解析(虚拟主机):

  1. 在server3的httpd的默认发布目录中建立两个虚拟主机
[[email protected] ~]# 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服务

[[email protected] bbs]# /etc/init.d/httpd restart

4.测试:

  • 在客户端添加解析
[[email protected] ~]# 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>