1、Varnish简介
Varnish是一款高性能且开源的反向代理服务器(Reverse Proxy Server),挪威最大的线上报纸Verdens Gang使用3台Varnish代替了原本的12台Squid, 性能比以前更好。Varnish的作者Poul-Henning Kamp是FreeBSD核心的开发人员之一,他认为现在的电脑比起1975年已经复杂许多。在那个时代,存储媒介只有两种:记忆体与硬盘。但现在电脑系统的记忆体除了主记忆体外,还包括了CPU内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此squid cache自行处理物件替换的架构不可能得知这些情況而做到最佳化,但作业系统可以得知这些情況,所以有关这部份的工作交给作业系统处理,这就是Varnish Cache的设计架构。
一般來说,使用Varnish代替Squid的理由有三点:
1.1、Varnish采用了“Visual Page Cache”技术,在记忆体的利用上,Varnish比Squid更具有优势,它避免了Squid频繁在记忆体、硬盘中交换文件,性能比Squid还高。
1.2、Varnish的稳定性高,进行相同工作的Squid服务器发生故障的几率似乎比Varnish高。
1.3、通过Varnish管理端口,可以使用正则表达式、批量地清除部分缓存,这一点是Squid不能具备的。
2、安装及启用
2.1、安装准备
安装依赖包
# yum install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig -y
下载安装包
# wget http://repo.varnish-cache.org/source/varnish-2.1.5.tar.gz
2.2、安装varnish
# tar xvf varnish-2.1.5.tar.gz
# cd varnish-2.1.5
# ./autogen.sh //配置时会检查软件的依耐关系是否满足
# ./configure
# make && make install
2.3、启动varnish
# varnishd -f /usr/local/etc/varnish/default.vcl -a 0.0.0.0:8080 -s malloc,1G -T 127.0.0.1:2022
参数含义:
-f 指定varnishd使用的配置文件
-s 配置varnish使用的存储类型和存储容量,存储类型分为目录文件或内存,默认使用/tmp目录文件存储。
-a HTTP监听地址与端口。
-T Telnet监听的地址与端口,用于执行varnish的一些管理命令。
所有的参数及含义可以通过“# varnishd --version”命令查看。
以上指令的含义为:varnishd使用/usr/local/etc/varnish/default.vcl中的配置参数,监听所有发往本机8080端口的HTTP请求,将访问结果缓存在内容中最大存储量为1G,varnish指令可以通过2022端口发送执行。
2.4、监测
查看日志
# varnishlog
查看连接数与命中率等
# varnishstat
开启日志
# varnishncsa -w /var/log/varnish.log &
3、default.vcl配置说明
vcl_recv
有请求到达后成功接收并分析时被调用,一般以以下几个关键字结束。
error code [reason] 返回code给客户端,并放弃处理该请求
pass 进入pass模式,把控制权交给vcl_pass
pipe 进入pipe模式,把控制权交给vcl_pipe
lookup 在缓存里查找被请求的对象,根据查找结果把控制权交给vcl_hit或vcl_miss
vcl_pipe
进入pipe模式时被调用。请求被直接发送到backend,后端和客户端之间的后继数据不进行处理,只是简单传递,直到一方关闭连接。一般以以下几个关键字结束。
error code [reason]
pipe
vcl_pass
进入pass模式时被调用。请求被送到后端,后端应答数据送给客户端,但不进入缓存。同一连接的后继请求正常处理。一般以以下几个关键字结束。
error code [reason]
pass
vcl_hash
目前不使用
vcl_hit
在lookup以后如果在cache中找到请求的内容事调用。一般以以下几个关键字结束。
error code [reason]
pass
deliver 将找到的内容发送给客户端,把控制权交给vcl_deliver.
vcl_miss
lookup后但没有找到缓存内容时调用,可以用于判断是否需要从后端服务器取内容。一般以以下几个关键字结束。
error code [reason]
pass
fetch 从后端取得请求的内容,把控制权交给vcl_fetch.
vcl_fetch
从后端取得内容后调用。一般以以下几个关键字结束。
error code [reason]
pass
insert 将取到的内容插入缓存,然后发送给客户端,把控制权交给vcl_deliver
vcl_deliver
缓存内容发动给客户端前调用。一般以以下几个关键字结束。
error code [reason]
deliver 内容发送给客户端
vcl_timeout
在缓存内容到期前调用。一般以以下几个关键字结束。
fetch 从后端取得该内容
discard 丢弃该内容
vcl_discard
由于到期或者空间不足而丢弃缓存内容时调用。一般以以下几个关键字结束。
discard 丢弃
keep 继续保留在缓存里
如果这些内置例程没有被定义,则执行缺省动作
一些内置的变量
now 当前时间,标准时间点(1970)到现在的秒数
backend.host 后端的IP或主机名
backend.port 后端的服务名或端口
请求到达后有效的变量
client.ip 客户端IP
server.ip 服务端IP
req.request 请求类型,比如GET或者HEAD或者POST
req.url 请求的URL
req.proto 请求的HTTP版本号
req.backend 请求对应的后端
req.http.header 对应的HTTP头
往后段的请求时有效的变量
bereq.request 比如GET或HEAD
bereq.url URL
bereq.proto 协议版本
bereq.http.header HTTP头
从cache或后端取到内容后有效的变量
obj.proto HTTP协议版本
obj.status HTTP状态代码
obj.response HTTP状态信息
obj.valid 是否有效的HTTP应答
obj.cacheable 是否可以缓存的内容,也就是说如果HTTP返回是200、203、300、301、302、404、410并且有非0的生存期,则为可缓存
obj.ttl 生存期,秒
obj.lastuse 上一次请求到现在间隔秒数
对客户端应答时有效的变量
resp.proto response的HTTP版本
resp.status 回给客户端的HTTP状态代码
resp.response 回给客户端的HTTP状态信息
resp.http.header HTTP头
四、参考阅读
1、《Varnish-2.1.1服务器安装配置文档[原创二版]》
分享到:
相关推荐
Linux环境下的Varnish配置涉及到安装、配置文件的修改、启动和管理、监控以及性能优化等多个环节。理解并掌握Varnish的基本工作原理和VCL语言,是有效利用Varnish提高Web性能的关键。通过不断的实践和调整,Varnish...
本压缩包提供的"基于Linux的Varnish的安装脚本.zip"包含了安装Varnish所需的步骤和配置,对于需要搭建高流量网站或优化现有网站性能的用户来说,这是一个非常实用的工具。 在Linux环境下安装Varnish主要包括以下几...
Linux安装配置varnish web加速器.
然后根据你的操作系统进行相应的`libpcre`安装,例如在某些Linux发行版中使用`apt-get`或`yum`来安装。 ### Varnish配置文件示例: ```vcl backend www { .host = "127.0.0.1"; .port = "80"; } backend blog { ...
Varnish安装时可以指定一个安装路径,通常是在Linux系统上通过./configure命令指定,例如安装到/opt/varnish目录下。下载地址通常位于Sourceforge或官方网站,Varnish 2.1.2版本可以通过tar.gz格式的压缩包进行安装...
在请求处理流程中,Varnish会根据VCL(Varnish配置语言)判断是将请求传递(pass)给后台服务器还是在本地查找(lookup)缓存数据。如果在本地找到缓存则称为命中(hit),否则需要向后端服务器发起请求并获取数据...
Linux 服务器反向代理软件 Varnish Varnish 是一种流行的反向代理软件,可以应用于 Web 前端,具有良好的 Cache 性能,使得网站承载能力有很大提升。本文主要介绍 Varnish 的安装、配置、监控等方面的实践体验。 ...
Varnish 3.0.7源码安装包的使用涉及到从源码编译、依赖安装到服务配置和运行等多个步骤。通过理解Varnish的工作原理和功能,你可以根据具体需求定制自己的缓存策略,实现高效的Web服务。在实际操作中,确保遵循最佳...
为了在本地系统上运行Varnish,你需要先安装必要的依赖(如编译工具链和库),然后运行配置脚本,编译源代码,最后进行安装。安装完成后,可以启动Varnish服务,并通过VCL配置文件定制其行为。同时,Varnish还提供了...
### 精通Linux网络服务器配置·管理·检测·应用 #### 一、Linux网络服务器配置 1. **网络配置**: - **IP地址**:通过`/etc/sysconfig/network-scripts/ifcfg-ethX`文件(其中X代表网卡接口编号)来设置静态IP...
在本文中,我们将深入探讨Varnish 3.0.4这一特定版本,以及它在Linux环境中的安装和使用。 首先,Varnish的核心功能是通过缓存经常请求的网页来减少服务器的负载,提高响应速度。它的工作原理是在用户请求页面时,...
在Red Hat Enterprise Linux(RHEL)或其兼容版本如CentOS 7中安装Varnish时,通常需要通过RPM(Red Hat Package Manager)来管理软件包。RPM是一种包管理系统,它使得安装、升级和卸载软件变得简单。以下将详细讲解...
在解压并编译安装varnish-3.0.2后,你可以通过配置VCL文件来定制你的缓存策略,然后启动Varnish服务。使用`varnishlog`和`varnishstat`命令监控Varnish的运行情况,而`varnishadm`则是一个交互式管理工具,可以帮助...
1. 安装Varnish:根据不同的Linux发行版,可以通过包管理器(如yum或apt-get)进行安装。 2. 配置Varnish:主要涉及`/etc/varnish/default.vcl`文件,其中定义了缓存规则、后端服务器地址、缓存策略等。 3. 启动...
1.4 Nginx的安装与配置 1.4.1 下载与安装Nginx 1.4.2 Nginx配置文件的结构 1.4.3 配置与调试Nginx 1.4.4 Nginx的启动、关闭和平滑重启 1.5 Nginx常用配置实例 1.5.1 虚拟主机配置实例 1.5.2 负载均衡...