一. varnish 下载与安装
1. 下载:
登陆官网
2. 安装:
yum install -y varnish-6.4.0-1.el7.x86_64.rpm
二. 配置varnish
配置文件:
查看varnish配置文件
rpm -qc varnish-6.3.1-1.el7.x86_64
查看varnish启动脚本
vim /usr/lib/systemd/system/varnish.service
查看系统打开最大文件数
sysctl -a | grep file-max
最大文件数无法满足varnish,这种情况下我们可以通过增加主机内存或将varnish最大文件数改小。
查看系统内存限制
vim /etc/security/limits.conf
启动服务,查看端口
systemctl start varnish
netstat -antuple | grep varnish
三. varnish 使用
1. 反向代理
修改端口:
这里改为80端口,是因为要做http服务端代理,http默认访问80端口,不影响客户感知
在浏览器访问
可以访问到varnish,现阶段因为当前服务端还没有数据
配置varnish,将请求交给node2的80端口
vim /etc/varnish/default.vcl
node2主机当前还没有80端口
在node2上配置httpd服务,启用80端口
再次访问浏览器,可以获取到node2上的内容
也就是说我们在访问node1时,请求被调度到node2上,因此访问到的是node2中的内容
2. 缓存
修改varnish配置,添加返回信息(http)并说明是读取缓存还是新数据
vim /etc/varnish/default.vcl
重启服务
systemctl restart varnish
访问:
客服论坛400-660-0108
工作时间 8:30-22:00
©1999-2020 北京创新乐知网络技术有限公司 网络110报警服务
varnish【缓存服务器和负载均衡】
dsd2333 2020-04-30 11:28:12 62
收藏
原力计划
展开
Table of Contents
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。
再次访问:
从第二次访问开始,内容都是从缓存中读取的,不需要再次重新从源服务器获取。
手动清理缓存 (默认120s自动清理缓存)
varnishadm ban req.url "~" /
varnishadm ban req.url "~" /index.html
# / 表示所有缓存
# / index.html 只表示这个页面
清理完缓存后
3. 请求转发
添加一个服务器node3,编辑请求转发模块,请求都是从node1发出的,经过调度均分到node2或者node3:
当访问 xxx.dsd.org 时转化为 www.dsd.org,访问的服务器是web1
当访问 bbs.dsd.org 时访问的服务器是web2
如果访问的是其他域名,报错
重启varnish
在node3安装并开启httpd服务,并修改默认发布页面
编辑本地解析文件
vim /etc/hosts
测试
4. 负载均衡
通过负载均衡,使得服务器轮循的接受请求
寻找所需库文件:
编辑varnish配置文件:
backend:定义好两个后端
初始化:round_robin()表示轮循接受
定义请求转发:当访问 www.dsd.org 时,会轮循访问两个服务器
要求不缓存:因为会产生缓存,没有办法看到实际的轮循效果,在这里设置不缓存
访问 www. dsd.org 时会做负载均衡分配给 node2 和 node3,而 bbs.dw.org 未做负载均衡
5. CDN推送
下载安装bansys.zip
编辑配置文件并修改端口号
vim /var/www/html/bansys/config.php
vim /etc/httpd/conf/httpd.conf
访问node1的8080端口
但是这个时候所有人都能访问。但是在实际生活中,只能让部分管理员有权限去推送,这就需要去做权限管理
vim /etc/varnish/default.vcl
编辑一个acl,用来插入允许访问的ip
在recv中添加和php通信部分
curl -I www.dw.org