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的配置文件(配置后端两台服务器)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# 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.重新启动服务,或者重新加载
在这里插入图片描述

[root@server1 ~]# /etc/init.d/varnish reload

3.在server2和server3配置http服务,并且写入内容
在这里插入图片描述
在这里插入图片描述

3.在客户端进行测试
修改本地解析
在这里插入图片描述
测试
在这里插入图片描述

2.负载均衡的配置

1.编辑varnish的配置文件
在这里插入图片描述
在这里插入图片描述

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.重新启动服务
在这里插入图片描述
3.清楚缓存
在这里插入图片描述
4.在客户端进行测试,访问www.westos.org时,会出现每访问一次,会变跳
在这里插入图片描述

3.验证varnish的缓存作用

1.编辑配置文件
在这里插入图片描述
注释调上面实验的不缓存
return (pass);
在这里插入图片描述

在这里插入图片描述

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.重新启动服务
在这里插入图片描述
3.清除缓存
在这里插入图片描述

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

3.客户端测试
第一次显示没用缓存到
在这里插入图片描述
以后都会显示缓存到了
在这里插入图片描述

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

  1. 在server3的httpd的默认发布目录中建立两个虚拟主机
[root@server3 ~]# 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,并编辑相应的前端文件

[root@server3 ~]# mkdir /www
[root@server3 ~]# mkdir /bbs
[root@server3 ~]# cd /www
[root@server3 www]# vim index.html
<h1>www.westos.org - server3</h1>
[root@server3 www]# cd /bbs
[root@server3 bbs]# vim index.html
<h1>bbs.westos.org - server3</h1>

3.重启httpd服务

[root@server3 bbs]# /etc/init.d/httpd restart

4.测试:

  • 在客户端添加解析
[root@foundation64 ~]# vim /etc/hosts
172.25.5.1 server1
172.25.5.3 www.westos.org bbs.westos.org

  • 访问测试
[root@foundation5 ~]# curl www.westos.org
<h1>www.westos.org - server3</h1>
[root@foundation5 ~]# curl bbs.westos.org
<h1>bbs.westos.org - server3</h1>

猜你喜欢

转载自blog.csdn.net/weixin_43407305/article/details/86776087
今日推荐