varnish【缓存服务器和负载均衡】

Table of Contents

1. varnish下载与安装

2. 配置varnish

3. varnish使用

反向代理

缓存

请求转发

负载均衡

CDN推送


1. varnish下载与安装

安装包网上都可以搜索到,这里我就不赘余介绍了,这里我已经将其放在Apache默认发布目录下,直接通过lftp连接,使用get下载

将.rpm文件下载好后,就可以直接安装了,步骤很简单,就不详细介绍了,直接贴图

2. 配置varnish

  • 查看配置文件
rpm -qc varnish-6.3.1-1.el7.x86_64  # 查看varnish配置文件

  • 查看varnish启动脚本
vim /usr/lib/systemd/system/varnish.service

最大文件数131072,默认内存限制82MB

  • 查看系统打开最大文件数
sysctl -a | grep file-max

最大文件数是97757,很明显无法满足varnish,这种情况下我们可以通过增加主机内存将varnish最大文件数改小

  • 查看系统内存限制

系统内存限制为64,明显小于varnish的82

vim /etc/security/limits.conf

  • 启动服务,查看端口
systemctl start varnish
netstat -antuple | grep varnish

3. varnish使用

反向代理

  • 修改端口

这里改为80端口,因为要做http服务端代理,http默认访问80端口,不影响客户感知 

  • 在浏览器访问node1

以发现,可以访问到varnish,现阶段因为当前服务端还没有数据

  • 配置varnish,将请求交给node2的80端口
vim /etc/varnish/default.vcl

但是node2主机当前还没有80端口

  • 在node2上配置httpd服务,启用80端口

再次访问浏览器,会发现已经获取到node2上的内容

也就是说我们在访问node1时,请求被调度到node2上,因此访问到的是node2中的内容

缓存

修改varnish配置,添加返回信息(http)并说明是 读取缓存 还是 新数据

vim /etc/varnish/default.vcl

重启服务

systemctl restart varnish
  • 访问node1

这是我们第一次访问,因此没有命令缓存, 显示的是MISS from varnish cache。

  • 再次访问node1

从第二次访问开始,内容都是从缓存中读取的,不需要再次重新从源服务器获取。

默认120s自动清理缓存

  • 手动清理缓存
varnishadm ban req.url "~" /   
varnishadm ban req.url "~" /index.html
#  / 表示所有缓存
#  / index.html 只表示这个页面

清理完缓存后,我们再来看看效果

请求转发

添加一个服务器node3,编辑请求转发模块,请求都是从node1发出的,经过调度均分到node2或者node3:

  • 当访问 xxx.dsd.org 时转化为 www.dsd.org,访问的服务器是web1
  • 当访问 bbs.dsd.org  时访问的服务器是web2
  • 如果访问的是其他域名,报错

重启varnish

  • 在node3安装并开启httpd服务,并修改默认发布页面

  • 编辑本地解析文件
vim /etc/hosts

  • 测试

原理:根据请求不同的域名,访问不同的后端,运用到实际生活就是功能分类使用 

负载均衡

通过负载均衡,使得服务器轮循的接受请求

  • 寻找所需库文件

  • 编辑varnish配置文件 
  • backend:定义好两个后端
  • 初始化:round_robin()表示轮循接受
  • 定义请求转发:当访问 www.dsd.org 时,会轮循访问两个服务器
  • 要求不缓存:因为会产生缓存,没有办法看到实际的轮循效果,在这里设置不缓存

访问 www. dsd.org 时会做负载均衡分配给 node2 和 node3,而 bbs.dsd.org 未做负载均衡

CDN推送

  • 下载安装bansys.zip

因为下载文件需要解压,并且其内容是由php书写,为了方便读取,我们将其解压在Apache共享目录下,因此我们直接安装unzip、php和httpd

  • 编辑配置文件并修改端口号
vim /var/www/html/bansys/config.php
vim /etc/httpd/conf/httpd.conf

  • 访问node1的8080端口

这个时候所有人都能访问。但是在实际生活中,只能让部分管理员有权限去推送,这就需要去做权限管理

vim /etc/varnish/default.vcl
  • 编辑一个acl,用来插入允许访问的ip
  • 在recv中添加和php通信部分 

当前有缓存,推送 .* 来清除缓存

除此之外,也可以通过 /index.html 指定推送一个页面,方法一样,就不作列举

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值