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

本文介绍如何在Varnish代理缓存服务器中配置多台后端Web服务器,并实现基于轮询的负载均衡策略,减轻单个服务器的压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.再来明确一下varnish加速器的作用

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

2.在上一篇的基础上为varnish加速器搭建多个web后端

  • 步骤一:开启node3快照,设置ip,主机名,yum源(准备将node3作为第二个web服务器)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    到这里快照node3已经导入镜像并且开启,因此接下来配置网络、修改主机名
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 步骤二:将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代理服务器上面进行配置(先设置两个最基本的后端)
    这个参考官方文档的说明
写入两个后端的信息
backend web1{
	.host = '172.25.12.2'
	.port = '80';
}
backend web2{
	.host = '172.25.12.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));
}
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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值