简介:
Varnish是一款高性能且开源的反向代理服务器和HTTP 加速器
特点:
(1)是基于内存缓存,重启后数据将消失。
(2)利用虚拟内存方式,io性能好。
(3)支持设置0~60秒内的精确缓存时间。
(4)VCL配置管理比较灵活。
(5)32位机器上缓存文件大小为最大2G。
(6)具有强大的管理功能,例如top,stat,admin,list等。
(7)状态机设计巧妙,结构清晰。
(8)利用二叉堆管理缓存文件,达到积极删除目的
环境设置:
测试环境:用VMWare安装的CentOS5.6,Windows2003,克隆的CentOS5.6命名为CentOS5.6.1
CentOS5.6 有两块网卡vmnet0(IP:192.168.2.10)用于与公网用户通信,vmnet1(IP:8.8.8.10)用于模拟内网
CentOS5.6.1 一块网卡vmnet0(IP:192.168.2.11)由于模拟内网提供服务web服务的服务器,我用的是Apache
Windows2003 一块网卡vmnet1(IP:8.8.8.11)用于模拟公网web用户。
配置CentOS5.6
ifconfig eth0 192.168.2.10 netmask 255.255.255.0 ifconfig eth1 8.8.8.10 netmask 255.255.255.0
配置CentOS5.6.1
ifconfig eth0 192.168.2.11 netmask 255.255.255.0
配置window2003
IP地址:8.8.8.11 子网掩码255.255.255.0
安装:
在CentOS5.6上安装Varnish
wget http://repo.varnish-cache.org/source/varnish-3.0.3.tar.gz tar -zxvf varnish-3.0.3.tar.gz cd varnish-3.0.3 ./configure --prefix=/usr/local/varnish
可能会出现下面的错误:
configure: error: Package requirements (libpcre) were not met:
解决办法:安装pcre-devel
yum install pcre-devel
继续安装
./configure --prefix=/usr/local/varnish make && make install
注:我用的是3.0.3正常安装没问题,3.0.5的可能会出现error
配置:
编辑varnish的配置文件
vim /usr/local/varnish/etc/varnish/default.vcl
添加下面的配置
backend default { .host = "192.168.2.11"; .port = "80"; }
.host指的是web服务器的IP,.port指的是web服务器的端口。
启动Varnish
/usr/local/varnish/sbin/varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a:80
说明:
-f:指定Varnish的配置文件
-s:确定Varnish使用的存储类型和存储容量,这里使用的是malloc类型(内存缓存),也可以使用文件缓存。只需要把malloc改为file。128M指Varnish使用多少内存作为缓存。下面的启动命令是是使用文件缓存
/usr/local/varnish/sbin/varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s file,/var/varnish_cache,128M -T 127.0.0.1:2000 -a:80
-T:指定管理程序侦听的地址和端口。在不重启Varnish的情况下,通过这个程序管理Varnish。如telenet
-a:指定Varnish侦听的地址和端口。
停止varnish
pkill varnish
测试:
在windows2003上打开浏览器,在地址栏里输入:http://8.8.8.10 回车,如图所示
第一次的http的状态码为200,说明访问成功,刷新一次,可看到,如下图所示
状态码变为了304,说明用到了缓存,但是这里的缓存来自与浏览器。说明不了问题,我们点开这条请求查看:
这里说明:我们的web服务器确实是varnish的反向代理提供的。但我们也只能知道varnish提供了反向代理,依然不知道varnish的缓存是否其作用。为此,我们在CentOS5.6上用ab进行一次压力测试。
在不用varnish的情况下:
ab -c100 -n1000 http://192.168.2.11/
使用varnish的情况下:
可以看到吞吐量明显增加了,可见是varnish的缓存功能其作用了。