详解varnish系统(负载均衡,cdn加速实现)

上一篇(链接地址)
给大家讲述的是varnish代理缓存服务器只有一台后端web服务器
也就是它只为一台web服务器做代理,实际企业当中这样做会造成浪费,至少是一对多的关系
因此接下来我将为大家讲解具有两台web后端的varnish系统
也就是node1代理服务器要同时为多台服务器缓存数据,node1同时为多个web服务器做代理

1. 为varnish加速器搭建多个web后端

在上一篇的基础上为varnish加速器搭建多个web后端
步骤一:开启node3快照,设置ip,主机名,yum源(准备将node3作为第二个web服务器)
在这里插入图片描述
在这里插入图片描述
步骤二:将node3也作为一个后端web服务器(也就是在node3上面搭建一个web服务器)

yum install httpd -y
systemctl start httpd
vim /var/www/html/index.html
bbs.westos.org
systemctl restart httpd
检测一下:curl localhost

在这里插入图片描述
在这里插入图片描述
步骤三:在node1代理服务器上面进行配置(先设置两个最基本的后端)
写入两个后端的信息
vim /etc/varnish/default.vcl

backend web1{
	.host = '172.25.8.2'
	.port = '80';
}
backend web2{
	.host = '172.25.8.3'
	.port = '80';
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里要注意括号,分号问题,不要因为这个没有设置好导致服务起不来
此时curl www.westos.org拿到的是web1的资源、curl bbs.westos.org拿到的是web2的资源
实现了最基本的具有两台后端,但是两台后端之间没有任何关系

2. 使用vainish加速器实现两个web后端服务器之间的负载均衡

实际上企业当中的web后端服务器(为客户端提供资源的服务器)的性能有好有坏
性能差一点的就让它少干一点活,性能好的就多分担一点
现在就是node2这个web服务器性能比较差,node3这个服务器性能比较好
客户端通过varnish加速器访问node2的时候去轮询node3
实际上node2和node3上面存放的资源一模一样,只是为了实验效果明显起见,写为www.westos.org和bbs.westos.org
当客户端第一次访问node2的时候varnish去问node2要资源
当客户端第二次访问node2的时候varnish去问node3要资源
这个时候node2和node3上面的资源一模一样,客户端根本察觉不到,也缓解了node2(性能差)的访问压力
客户端通过varnish加速器访问node3的时候只去找node3(性能好)
以上这个思想就是在node2和node3之间实现调度(负载均衡),这个调度就是在varnish这个加速器上面实现的
实现负载均衡的调度算法很多,为了实验效果明显起见,我们使用轮询方式的均衡(就是轮着干)
步骤一:在node1(varnish加速器)上面进行配置

vim /etc/varnish/default.cvl
在上面写入:
import directors from "/usr/lib64/varnish/vmods/libvmod_directors.so";(调度模块)
在下面写入:
sub vcl_init {
	new lb = directors.round_robin();
	lb.add_backend(web1);
	lb.add_backend(web2);
}
表示在web1(node2)和web2(node3)之间实现负载均衡
在下面修改:
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend_hint = lb.backend();访问web1的时候去轮询web2
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend_hint = web2;
} else { return (synth(405));
}
systemctl restart varnish修改完之后重启服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl restart varnish
此时的vainish是默认会缓存每一个访问到的资源
步骤二:在真机上面做本地解析,进行测试

vim /etc/hosts
172.25.12.1  www.westos.org bbs.westos.org
curl www.westos.org
curl bbs.westos.org

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl restart varnish 重启varnish服务
在这里插入图片描述
curl www.westos.org发现node2和node3负载均衡
curl bbs.westos.org没有负载均衡,只有node3提供资源
现在其实web1上面的资源和web2上面的资源一样
当客户通过node1代理去找node2和node3的时候
应该实现调度,负载均衡,在node1上面实现负载均衡
使找node2的资源的时候负载均衡(这里使用轮询方式),性能不好的服务器
使找node3的资源的时候不负载均衡,因为他的性能比较好

3.搭建一个varnish系统为具有多个资源的web后端服务器服务

上面的web服务器上面都只有一个资源,比如node2和node3上面
实际在企业当中,比如百度的服务器:包括地图资源、新闻资源等等
现在我也想实现一台主机上放多个资源,也就是给web服务器建立虚拟主机,然后结合varnish加速器
接下来我将在node3上面搭建apache虚拟主机
之前node2和node3都是仅有一个站点资源的web服务器
这篇文章是基于上一篇的负载均衡做的,才可以看到明显的实验效果

步骤一:在node3这台web服务器上面搭建虚拟主机

cd /etc/httpd/conf.d切换到编写虚拟主机配置文件的目录下
ls查看一下
vim vhost.conf编写虚拟配置文件
<VirtualHost *:80>
	DocumentRoot /www
	ServerName www.westos.org
</VirtualHost>
<Directory "/www">
	Require all granted
</Directory>
<VirtualHost *:80>
	DocumentRoot /bbs
	ServerName bbs.westos.org
</VirtualHost>
<Directory "/bbs">
	Require all granted
</Directory>
mkdir /www /bbs建立两个共享目录
vim /www/index.html编写共享文件
www
vim /bbs/index.html编写共享文件
bbs
systemctl restart httpd 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl restart httpd
步骤二:在真机上面进行测试
在这里插入图片描述

curl www.westos.org(有两个资源)
因为真机的解析文件里面写的是node1的ip对应web1服务器的域名
因此会去找web1服务器要东西
此时的web1服务器的资源一个是www.westos.org,一个是www(这个是轮询找的web2上面的资源)
curl bbs.westos.org()
同理,直接找到web2上面的bbs.westos.org
可以看出node3(web2)上面有两个网页资源

4.图形化清理varnish代理服务器的缓存

之前我们清除varnish加速器上面的缓存采用的是命令的方式,现在采用图形化界面来清理缓存
图形化界面清理缓存,主要是权限列表的设置要会,不能让什么人都有权限去清理缓存
就是想实现把node1代理服务器上面的缓存实现图形化清除,可以有权限设置
现在node1部署这个服务,测试的时候在哪个浏览器里面都可以进行缓存清理
这个在node1代理服务器上面设置
步骤一:从真机给node1代理传一个压缩包

scp bansys.zip [email protected]:/root
把压缩包发送到node1家目录下面

在这里插入图片描述
步骤二:在node1代理服务器上面进行设置
开始在node1上面搭建服务

yum install -y unzip php httpd安装这些服务
unzip bansys.zip -d /var/www/html解压到apache下
cd /var/www/html
ls
cd bansys/
mv * ../
cd ..
ls
cd bansys/
vim config.php改php图形化服务的配置文件
改ip是172.25.8.1,apahce端口为8080
域名改为www.westos.org(对这个域名的数据进行缓存清理)
vim /etc/httpd/conf/httpd.conf
apahce端口为8080
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl restart httpd
步骤三:在浏览器里面搜:172.25.12.1:8080(哪个浏览器都性,真机的也可以)
选HTTP
在这里插入图片描述
步骤四:编辑代理服务器的权限列表

vim /etc/varnish/default.cvl
写入权限列表:
acl westos{
"127.0.0.1";#主机自己
"172.25.8.0"/24;#这个网段的所有主机都有权限清理代理服务器上面的缓存
}
再写入:
if (req.method == "BAN") {
if (!client.ip ~ westos) {
return (synth(405,"Not allowed."));
}#如果不是允许的ip就拒绝清理
ban("req.url ~ " + req.url);
return(purge);#如果是就清理缓存
}
注释:return(pass),这个会一直清除缓存,之前的实验做的
清除这个代理服务器就不会缓存资源了,直接从服务器请求资源给客户端
systemctl restart varnish

vim /etc/varnish/default.cvl
在这里插入图片描述
步骤五:然后在真机进行测试:

curl -I www.westos.org 是miss
curl -I www.westos.org 是hit
curl -I www.westos.org 是hit
然后图形化清除缓存,输入.*,发送(清除所有缓存)

curl -I www.westos.org/index miss
curl -I www.westos.org/index hit
curl -I www.westos.org/index hit
然后图形化清除缓存
/index.html,输入/index,开始清除缓存 (指定清除哪个缓存)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了94 篇原创文章 · 获赞 1 · 访问量 1761

猜你喜欢

转载自blog.csdn.net/qq_36417677/article/details/104483437