概念
- varnish:【Varnish HTTP Cache】,Varnish是反向HTTP代理,有时也称为HTTP加速器或Web加速器。 反向代理是一种代理服务器,在客户端看来是普通服务器。 Varnish在内存中存储(缓存)文件或文件片段,以减少响应时间和对未来等效请求的网络带宽消耗。 根据现代硬件,现代操作系统和现代工作负载而设计。
- varnish官网:http://varnish-cache.org/
- 后端服务器:【backend】也叫原点服务器,后端服务器将提供 varnish 加速的内容,在配置文件/etc/varnish/default.vcl中;Varnish 可以定义多个后端服务器,并且可以通过定义多个后端服务器达到负载均衡的目的。
- varnish默认使用端口:6081
- VCL:【varnish configuration language】,varnish区域配置语言,目的在于规定请求的处理和内容的缓存策略。在执行vcl时,varnish 就把 VCL 转换成二进制代码
反向代理缓存
单一服务器
- 试验内容:node1反向代理缓存node2主机
- 试验环境:2台机器
主机名 | IP地址 | 服务 | 作用 |
---|---|---|---|
node1 | 192.168.27.11 | varnish | 反向代理缓存 |
node2 | 192.168.27.12 | httpd | http服务 |
- 具体步骤:
- node1中安装varnish,本次安装varnish-6.3.1-1.el7.x86_64.rpm;依赖性软件jemalloc-3.6.0-1.el7.x86_64.rpm
- 修改配置文件/etc/varnish/default.vcl,添加代理后端服务器
# Default backend definition. Set this to point to your content server. backend default { .host = "192.168.27.12"; #将node2地址设置为varnish后端服务 .port = "80"; #访问端口80 }
- 更改端口6081为80;(因为使用的是rhel7.5系统,服务是由有systemd管理,此处修改varnish服务启动后的访问端口方式为;修改/usr/lib/systemd/system/varnish.service服务文件)
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6081 -f /etc/varnish/default.vcl -s malloc,256m #execstart 真实启动方式,调用启动脚本varnishd,execstart=后面的可以直接在命令行中运行,开启服务 #-a varnish监听所有发给80端口的http请求;也可以写作-a 0.0.0.0:80 #-T 转发本地监听端口6081 #-f 指定配置文件为/etc/varnish/default.vcl #-s 指定选项用来确定 varnish 使用的存储类型和存储容量,使用的是 malloc 类型( malloc 是一个 C 函数,用于分配内存空间), 1G 定义多少内存被 malloced
- node2安装httpd,设置访问页面index.html内容为node2
- 测试内容
- 确认反向代理可否进行访问
# node1中: curl 192.168.27.11 node2
- 确认是本地缓存,还是转发地址(此处需要添加vcl_deliver;vcl_deliver当一个没有被 cached 内容交付给客户端的时候被调用)
node1中修改配置文件/etc/varnish/default.vcl,重启服务
#是否存在访问记录 sub vcl_deliver { # Happens when we have all the pieces we need, and are about to send the # response to the client. # # You can do accounting or modifying the final object here. if (obj.hits > 0){ #检测访问次数 set resp.http.X-Cache = "HTML cache"; #已有访问记录反馈信息