Varnish 的安装使用,及简单配置

Varnish 是一个开源的反向代理软件,所以可做缓存服务器进行 Web 加速,类似的有 Squid, Nginx, 和  HAProxy。但 Varnish 与其他三个相比性能更优,例如 Squid 的成名是它可作为上网代理服务器, Nginx 是一个优秀 Web 服务器,这两都非专业的 Web 加速器,而 HAProxy 与  Varnish 有的一比。

实际上 Varnish 的表现如何了,网上找来找去都讲这么一个实证:挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。并且要知道 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,牛人一个。

Varnish 有什么特点呢?

VCL 进行配置,正则表达式条件判定进行规则设置
支持负载均衡和健康检查,多种条件请求分分
支持 ESI( Edge Side Include),即页面局部组件的缓存
URL 地址重写,响应头改写

安装 Varnish

Varnish 官方下载页提供有 Debian, FreeBSD, RedHat, Ubuntu 下的二进制文件下载,它在 FreeBSD 和 Linux 下有良好的表现,也可让它运行在 NetBSD, OpenBSD 和 OS X 下。来看 Varnish 的安装,在 Ubuntu 下只要运行:

如果是在 RedHat 下换成 yum 就是,即

如果愿意基于源代码来安装的话,无非就是

若是缺什么就补什么了。

默认配置

装完了之后,它的默认配置文件就是 /etc/varnish/default.vcl,像  Squid 的配置文件  squid.conf 一样,这个默认的配置文件本身就是一个详细的配置文档,详见注释。目前有效内容就只有几行:

Varnish 是个代理服务器,所以它在 Web 服务器前端,它默认的端口也是 6081。所以默认情况下上面的配置表示的意思是:

对于发往本机 6081 端口的请求将派发给主机  127.0.0.1 的 8080 端口所对应的进程去处理。8080 基本为知名的 Tomcat 端口,看来它与 Tomcat 走得比较近(玩笑而已)。

Varnish 的启动,三种方式

1) varnishd 命令

varnishd -f /etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80 , 命令执行成功以后 , 访问 127.0.0.1 此时返回了 8080 端口的真实数据 , 通过火狐浏览器的FireBug 查看网络请求头信息 , 会发现在 "响应头信息" 里面 Varnish 添加了两个属性信息 (Age:3,Via:1.1 varnish), Varnish 到此就已经安装并且启动成功。

-f /etc/varnish/default.vcl -- 指定 Varnish 需要使用的配置文件
-s malloc,1G         -- 指定 Varnish 的缓存空间
-T 127.0.0.1:2000        -- varnish 有一个基于文本的管理接口 , 启动它可以在不停止 varnish 的情况下来管理 varnish 。指定管理软件监听哪个 端口
-a 0.0.0.0:80      -- 指定 Varnish 使用的端口号 , Varnish 会监听所有来自 80 端口号的数据 , 并且转发给 backend default 配置的真实服务器 。

2) sudo /etc/init.d/varnish start|stop|restart|status

3) sudo service varnish start|stop|restart|status

后两种方式采用默认配置,即执行的命令是

/usr/sbin/varnishd -P /var/run/varnishd.pid -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

 我们可以修改使用  /etc/init.d/varnish 和 service varnish 启动 varnish 的默认参数, RedHat 的配置文件在 /etc/sysconfig/varnish, Ubuntu 的配置文件在 /etc/default/varnish,打开这个文件,针对产品环境通常是用 80 端口来接收并转发请求,这样子看起来它还是一个 Web 服务器。所以我们参考里面的

在最后面加上

你也可以使用文件来缓存,同样是参看这个  varnish 配置文件中的详细注释。

然后 sudo service varnish restart,现在发往 80 上的 http 请求就转发给了 127.0.0.1:8080 去处理了。这里基于测试的方便我把 /etc/varnish/default.vcl 的内容简单改为:

80 上接收到的请求委派给 10.0.0.3:9000 进程去处理。

现在用  curl 来对发往本机 80 上的  http 请求进行测试一下

看到的请求头中多了关于 varnish 的三行

好了,现在完整的 Varnish 反向代理过程完成了,本想这里详细的把 Varnish VCL 基本规则配置,负载均衡,以及条件缓存,处理流程都讲了,看来要限于篇幅有限,以后分述了。

关于观察 Varnish 的状态,以下所有以 varnish 打头的命令很重要,可以用它们实时看到缓存命中状态,和更多的详细信息

另外附上些链接与文档:

    1. Welcome to Varnish's documentation
    2. varnish学习应用之 安装 配置 监控
    3. 高性能 Varnish 优化指南
    4. Welcome to the Varnish Book
    5. 缓存服务varnish安装配置
    6. varnish的VCL的配置详解

类别: Linux/Unix. 标签: , . 阅读(1,328). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
trackback

wiki.dragonballs.eu

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Azam

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

website here

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Look At This

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Lazyeyeprod.com

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Adelina

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Countyseatsportsgrille.com

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

Aartjan

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

4consulting-services.com

Varnish 的安装使用,及简单配置 | 隔叶黄莺 Unmi Blog - 软件编程实践

trackback

[...] Unmi Varnish 是一个开源的反向代理软件,所以可做缓存服务器进行 Web [...]