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

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.重新起动服务,或者重新加载

/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

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.重起服务

/etc/init.d/varnish restart

3.清除缓存

varnishadm ban.url .*$

4.测试,访问www.westos.org时,每访问一次,后端服务器变化一次
Varnish-CDN(多个后端服务器)

验证varnish的缓存作用
1.配置文件

vim /etc/varnish/default.vcl

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.重起服务,清除缓存

/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

Varnish-CDN(多个后端服务器)

以后都会显示缓存到

curl -I www.westos.org

Varnish-CDN(多个后端服务器)

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

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>