1.背景
实际企业当中varnish代理缓存服务器只有一台后端web服务器,这样做会造成浪费,至少是一对多的关系
varnish的两个作用:代理服务器、缓存数据
2.在上一篇的基础上为varnish加速器搭建多个web后端
- 步骤一:首先开启一台server3(ip:172.25.61.3),在server3上面搭建一个web服务器
yum install httpd -y
systemctl start httpd
vim /var/www/html/index.html
bbs.westos.org
systemctl restart httpd
检测一下:curl localhost
- 步骤二:在server1代理服务器上面进行配置(先设置两个最基本的后端)
参考官方文档的说明
写入两个后端的信息
backend web1{
.host = '172.25.61.2'
.port = '80';
}
backend web2{
.host = '172.25.61.3'
.port = '80';
}
- 步骤三:在真机测试
写入解析
测试
此时curl www.westos.org拿到的是web1的资源、curl bbs.westos.org拿到的是web2的资源
实现了最基本的具有两台后端,但是两台后端之间没有任何关系
3.使用vainish加速器实现两个web后端服务器之间的负载均衡
- 步骤一:在server1(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修改完之后重启服务
清除缓存
- 步骤二:修改server2和server3的发布内容
- 步骤三:在真机测试
此时发现没有轮询,是因为varnish缓存了资源 - 步骤四:去掉varnish服务器缓存,方便测试
- 步骤五:再次在真机测试
curl www.westos.org发现server2和server3负载均衡
curl bbs.westos.org没有负载均衡,只有server3提供资源