CDN缓存varnish——搭建具有多个后端服务器的varnish系统(内含负载均衡)

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

1.再次明确varnish加速器的作用
varnish有两个作用:代理服务器缓存数据
当是用户的私人数据和动态数据的时候:
varnish只是作为代理服务器去问后端服务器要东西然后给客户端,自己不会缓存(负载均衡、调度)
更新快的数据一般没有缓存
一般的数据varnish代理服务器不但要东西还要给自己缓存一份

2.为varnish加速器搭建多个web后端
开启server3,配置ip,yum源等
在这里插入图片描述
将node3也作为一个后端web服务器(也就是在node3上面搭建一个web服务器)
在server3搭建http服务
在这里插入图片描述
在node1代理服务器上面进行配置(先设置两个最基本的后端)
写入两个后端的信息
在这里插入图片描述
backend web1{
.host = ‘172.25.15.2’
.port = ‘80’;
}
backend web2{
.host = ‘172.25.15.3’
.port = ‘80’;
}
在这里插入图片描述
在请求模块当中加入两个后端服务器资源域名
在这里插入图片描述
重启服务
此时在真机上测试
在这里插入图片描述
curl www.westos.org拿到的是web1的资源、curl bbs.westos.org拿到的是web2的资源
实现了最基本的具有两台后端,但是两台后端之间没有任何关系

3.使用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));
}
在这里插入图片描述
在访问web1的时候会使用负载均衡,在web1和web2之间进行轮询,在访问web2时不进行负载均衡
systemctl restart varnish修改完之后重启服务

然后在真机上测试,发现并没有轮询web2
在这里插入图片描述
是因为varnish加速器缓存了web1的资源,所以在文件中加入return(pass)目的是不让varnish加速器缓存web服务器的资源,每次客户端请求,varnish加速器都会向web服务器要资源,如果缓存了就看不到负载均衡的效果
在这里插入图片描述
重启服务
再次测试
在这里插入图片描述
发现curl web1的时候实现了轮询,,curl web2时不轮询
在这里插入图片描述
现在其实web1上面的资源和web2上面的资源一样
当客户通过node1代理去找node2和node3的时候
应该实现调度,负载均衡,在node1上面实现负载均衡
使找node2的资源的时候负载均衡(这里使用轮询方式),性能不好的服务器
使找node3的资源的时候不负载均衡,因为他的性能比较好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值