CDN加速的实现(二)varnish--多个后端服务器实现负载均衡

实验环境:

主机 ip 用途
server1 172.25.66.1 varnish服务
server2 172.25.66.2 后端服务器
server3 172.25.66.3 后端服务器
物理机 172.25.254.66 测试端,客户端

1.配置多个不同域名站点的后端服务器

1.在sever3中编辑测试页
<1>在server3中安装httpd并在共享目录下创建文件写入内容,最后开启服务

[root@server3 ~]# yum install httpd -y
[root@server3 ~]# cd /var/www/html
[root@server3 html]# vim index.html
[root@server3 html]# /etc/init.d/httpd start

在这里插入图片描述
在这里插入图片描述
2. 在server1中编辑配置文件
<1>编辑/etc/varnish/default.vcl文件

[root@server1 ~]# cd /etc/varnish/
[root@server1 varnish]# vim default.vcl 

在这里插入图片描述
并添加以下内容:

backend web1 {	#第一个后端服务器的名称为web1
  .host = "172.25.66.2"; #第一个后端服务器的ip
  .port = "80";
}

backend web2 { #第二个后端服务器的名称为web1
  .host = "172.25.66.3"; #第二个后端服务器的ip
  .port = "80";
}
……
#当访问 www.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;	##web1上获取数据
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;	##web2上获取数据
} else {
error 404 "westos cache";
}
}

在这里插入图片描述
<2>编辑完配置文件后,重新启动varnish服务

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

在这里插入图片描述
3.检测
<1>在物理机上编辑/etc/hosts文件,写入域名解析

[root@foundation66 ~]# vim /etc/hosts
[root@foundation66 ~]# cat /etc/hosts

在这里插入图片描述
<2>在物理机上访问www.westos.org和bbs.westos.org,会发现访问www.westos.org时访问的是后端服务器server2的中的内容,访问bbs.westos.org时访问的是后端服务器server3的中的内容

[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl bbs.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl bbs.westos.org

在这里插入图片描述

2.CDN加速实现负载均衡的varnish过程

<1>在server1中编辑/etc/varnish/default.vcl文件并重启服务

[root@server1 varnish]# vim default.vcl 
[root@server1 varnish]# /etc/init.d/varnish reload

在这里插入图片描述
编辑的内容如下:

#把多个后端聚合为一个组,并检测后端健康状况

director lb round-robin {	#轮循
{.backend = web1;}
{.backend = web2;} 
}
set req.backend = lb;   #当访问www.westos.org域名时,从lb或取数据,采用轮循制度,调用平衡轮循的函数

在这里插入图片描述
<2>在物理机上访问www.westos.org,发现并没有出现轮循,其原因是因为没有清除缓存

[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org

在这里插入图片描述
<3>再次进入sever1的配置文件中,添加return (pass)内容,使其不进行缓存

[root@server1 varnish]# vim default.vcl 
[root@server1 varnish]# /etc/init.d/varnish reload

在这里插入图片描述
添加的内容如下:

return (pass);

在这里插入图片描述
<4>再次在物理机上访问www.westos.org时,发现出现了轮循,说明varnish实现了负载均衡

[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org

在这里插入图片描述
<5>在物理机上验证没有击中缓存,即varnish没有缓存数据

[root@foundation66 ~]# curl -I www.westos.org
[root@foundation66 ~]# curl -I www.westos.org

在这里插入图片描述

3.varnish的虚拟主机(一个主机中包含多个解析)

1.在server3上创建虚拟主机并编辑测试页
<1>在server3上编辑httpd的主配置文件,编写虚拟主机的信息

[root@server3 html]# cd /etc/httpd/conf
[root@server3 conf]# ls
[root@server3 conf]# vim httpd.conf 

在这里插入图片描述
文件中的需要增加的内容如下:

990 NameVirtualHost *:80	#设定虚拟主机的端口为80
……
1010 <VirtualHost *:80>
1011         DocumentRoot /www	#域名前端为www
1012         ServerName www.westos.org
1013 </VirtualHost>
1014 <VirtualHost *:80>
1015         DocumentRoot /bbs	#域名前端为bbs
1016         ServerName bbs.westos.org
1017 </VirtualHost>

在这里插入图片描述
<2>在server3上编辑测试页

[root@server3 conf]# mkdir /www /bbs
[root@server3 conf]# cd /www
[root@server3 www]# vim index.html
[root@server3 www]# cat index.html
[root@server3 www]# cd /bbs
[root@server3 bbs]# vim index.html
[root@server3 bbs]# cat index.html

在这里插入图片描述
<3>重启httpd服务

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

在这里插入图片描述
2.在物理机中进行测试
<4>在物理机上访问www.westos.com,发现内容皆为轮循变化的

[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org
[root@foundation66 ~]# curl www.westos.org

在这里插入图片描述
<3>在物理机上访问bbs.westos.com,访问的是在server3中创建的虚拟主机中的以bbs开头的测试页

[root@foundation66 ~]# curl bbs.westos.org
[root@foundation66 ~]# curl bbs.westos.org

在这里插入图片描述
总结:
相当于在server3的主机中创建一个虚拟主机,此主机有两个解析,当物理机机在访问www时显示的是一个测试页(在server3中创建/www目录并在里面写入内容),当访问bbs时显示的是一个测试页(在server3中创建/bbs目录并在里面写入内容)

总的总结:
1.缓存是不同的url,调度相当于负载均衡
2.资源分类:在访问不同域名时,访问的是不同的页面(服务器资源)
3.定义两个主机的原因是,就要实现负载均衡
4.round-robin是轮循调度的意思
5.加入代码return (pass);去掉缓存再测试,出现MISS是不缓存
6.同一台服务器,部署两个web服务,需要虚拟主机
7.一个域名有一个资源,有两个
8.varnish有个web界面
9.php是一个动态页面,所以需要下载php软件

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/89322757