Linux----Varnish缓存加速服务器

mac2024-03-22  28

一、varnish 原理:

1)Varnish 简介:

varnish 缓存是 web 应用加速器,同时也作为 http 反向缓存代理。你可以安装 varnish 在任何 http 的前端,同时配置它缓存内容。与传统的 squid 相比,varnish 具有性能更高、速度更 快、管理更加方便等诸多优点。

根据官网的介绍,Varnish 的主要特性如下:https://www.varnish-cache.org/

1.缓存位置:可以使用内存也可以使用磁盘。如果要使用磁盘的话推荐 SSD 做 RAID1

2.日志存储:日志也存储在内存中。存储策略:固定大小,循环使用

3.支持虚拟内存的使用。

4.有精确的时间管理机制,即缓存的时间属性控制。

5.状态引擎架构:在不同的引擎上完成对不同的缓存和代理数据进行处理。可以通过特定的 配置语言设计不同的控制语句,以决定数据在不同位置以不同方式缓存,在特定的地方对经 过的报文进行特定规则的处理。

6.缓存管理:以二叉堆格式管理缓存数据,做到数据的及时清理。

 

2Varnish Squid 的对比

相同点: 都是一个反向代理服务器; 都是开源软件;

Varnish 的优势:

1Varnish 的稳定性很高,两者在完成相同负荷的工作时,Squid 服务器发生故障的几率要 高于 Varnish,因为使用 Squid 要经常重启;

2Varnish 访问速度更快。

3Varnish 可以支持更多的并发连接,

4Varnish 可以通过管理端口,使用正则表达式批量的清除部分缓存,而 Squid 是做不到的;

Varnish 的劣势:

1、varnish 进程一旦 Crash 或者重启,缓存数据都会从内存中完全释放,此时所有请求都会 发送到后端服务器,在高并发情况下,会给后端服务器造成很大压力;

2、在 varnish 使用中如果单个 url 的请求通过 HA/F5 等负载均衡,则每次请求落在不同的 varnish 服务器中,造成请求都会被穿透到后端;而且同样的请求在多台服务器上缓存,也 会造成 varnish 的缓存的资源浪费,造成性能下降;

3)简单架构:

Varnish 分为 management 进程和 child 进程;

Management 进程:对子进程进行管理,同时对 VCL 配置进行编译,并应用到不同的状态引 擎。

 Child 进程:生成线程池,负责对用户请求进行处理,并通过 hash 查找返回用户结果。

4)varnish 主要配置部分:

varnish 配置主要分为:后端配置,ACL 配置,probes 配置,directors 配置,核心子程序配置 几大块。其中后端配置是必要的,在多台服务器中还会用到 directors 配置,核心子程序配 置。

后端配置:即给 varnish 添加反代服务器节点,最少配置一个。

ACL 配置:即给 varnish 添加访问控制列表,可以指定这些列表访问或禁止访问。

probes 配置:即给 varnish 添加探测后端服务器是否正常的规则,方便切换或禁止对应后端 服务器。

directors 配置:即给 varnish 添加负载均衡模式管理多个后端服务器。

核心子程序配置:即给 varnish 添加后端服务器切换,请求缓存,访问控制,错误处理等规 则。

5、特定功能性语句

 

ban(expression):清除指定对象缓存

call(subroutine):调用子程序,如:call(name); hash_data(input):生成 hash 键,用于制定

hash 键值生成结构,只能在 vcl_hash 子程序中使 用。调用 hash_data(input) 后,即这个 hash 为当前页面的缓存 hash 键值,无需其它获取或 操作,

 

 

 

二、安装 varnish

varnish是一个非常优秀的图片缓存服务器,他是完全基于内存的缓存服务器,从图片缓存的角度来看,性能优于nginx和squid,下面我将为大家讲述如何完整的安装一个varnish缓存服务器。

 

(1):安装依赖关系的软件包(注:使用 centos 在线 yum 源)

 [root@varnish ~]# yum -y install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx

2、安装 varnish

1:搭建环境:

确保 varnish 服务器能正常访问 web01web02 Varnish 缓存代理服务器配置

 

Varnish 的官方网址为 http://varnish-cache.org可以在这里下载最新版本的软件。

下载地址:https://www.varnish-cache.org/content/varnish-cache-403

先安装依赖从yum源上下载:(大概4分钟看下载速度)

yum -y install  libedit-devel  pcre-devel  python-docutils

解压,进入解压目录编译安装:

[root@varnish ~]# tar zxf varnish-4.0.3.tar.gz

[root@varnish ~]# cd varnish-4.0.3/

[root@varnish varnish-4.0.3]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

[root@varnish varnish-4.0.3]#./configure && make && make install

[root@varnish varnish-4.0.3]# cp etc/example.vcl /usr/local/var/varnish/default.vcl

安装完成后编辑vcl文件配置内容:

 

验证:

2):访问控制列表(ACL): 创建一个地址列表,用于后面的判断,可以是域名或 IP 集合。这个可以用于指定某些地址 请求入口,防止恶意请求等。

语法格式:

说明:acl 是访问列表关键字(必需小写),name 是该列表的别名用于调用,花括号内部是 地址集。

注意:如果列表中包含了无法解析的主机地址,它会匹配任何地址。

验证:

5)缓存规则配置:

 

如果不是 GET 和 HEAD 就跳到 pass;

 

 

 

 

3、启动 varnish

当启动 varnish 时有两个重要的参数你必须设置: 一个是处理 http 请求的 tcp 监听端口,另一 个是处理真实请求的后端 server

最新回复(0)