• 每天进步一点点!

文章分类

推荐网站

常用手册

高速缓存Varnish【原创】

<<返回

2013-12-20 11:23:32

简介:

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的缓存功能其作用了。

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论