声明:
下面的安装步骤安全参照张宴的<<使用Varnish代替Squid做网站缓存加速器的详细解决方案>>一文操作,转载于:http://blog.s135.com.
文中结合的自已在操作中遇到了一点问题,并穿插记录其中.
故特记于此,以备以后查阅
1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache):
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /var/vcache
chmod +w /var/vcache
chown -R www:www /var/vcache
2、创建Varnish日志目录(/var/logs/):
mkdir -p /var/logs
chmod +w /var/logs
chown -R www:www /var/logs
3、编译安装varnish:
wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.2.tar.gz
tar zxvf varnish-1.1.2.tar.gz
cd varnish-1.1.2
./configure --prefix=/usr/local/varnish
make && make install
注意,我在进行make步骤时,出现如下错误:
"varnishhist.c:35:20: error: curses.h: No such file or directory"
造成该问题的原因是因为系统中少了ncurses-devel包,由于我的平台是CentOS,可用如下命令进行安装该ncurses-devel包:
yum install ncurses-devel
安装成功后,再重新执行make && make install
4、创建Varnish配置文件:
vi /usr/local/varnish/vcl.conf
输入以下内容:
backend myblogserver {
set backend.host = "192.168.0.5";
set backend.port = "80";
}
acl purge {
"localhost";
"127.0.0.1";
"192.168.1.0"/24;
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
lookup;
}
if (req.http.host ~ "^blog.s135.com") {
set req.backend = myblogserver;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
else {
error 404 "Zhang Yan Cache Server";
lookup;
}
}
sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}
sub vcl_fetch {
if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
set obj.ttl = 3600s;
}
else {
set obj.ttl = 30d;
}
}
这里,我对这段配置文件解释一下:
(1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器;
(2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存;
(3)、Varnish对域名为blog.s135.com的请求进行处理,非blog.s135.com域名的请求则返回“Zhang Yan Cache Server”;
(4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
(5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。
5、启动Varnish
ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on
6、启动varnishncsa用来将Varnish访问日志写入日志文件:
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log &
7、如果想配置成开机自动启动Varnish
vi /etc/rc.local
在末尾增加以下内容:
ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &
8、优化Linux内核参数
vi /etc/sysctl.conf
在末尾增加以下内容:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
再看看如何管理Varnish:
1、查看Varnish服务器连接数与命中率:
/usr/local/varnish/bin/varnishstat -n /var/vcache
输出的结果如下图显示:
2、通过Varnish管理端口进行管理:
用help看看可以使用哪些Varnish命令:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help
3、通过Varnish管理端口,使用正则表达式批量清除缓存:
(1)、例:清除类似http://blog.s135.com/a/zhangyan.html的URL地址):
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/
(2)、例:清除类似http://blog.s135.com/tech的URL地址:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$
(3)、例:清除所有缓存:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$
附1:2007年12月10日,我写了一个每天0点运行,按天切割Varnish日志,生成一个压缩文件,同时删除上个月旧日志的脚本(/var/logs/cutlog.sh):
/var/logs/cutlog.sh文件内容如下:
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /var/logs/youvideo.log /var/logs/${date}.log
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &
mkdir -p /var/logs/youvideo/
gzip -c /var/logs/${date}.log > /var/logs/youvideo/${date}.log.gz
rm -f /var/logs/${date}.log
rm -f /var/logs/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz
设置在每天00:00定时执行:
/usr/bin/crontab -e
或者
vi /var/spool/cron/root
输入以下内容:
0 0 * * * /bin/sh /var/logs/cutlog.sh
分享到:
相关推荐
最近,朋友托我帮他找些关于Varnish的资料。整理了下,都在这里了。... |- 使用Varnish代替Squid做网站缓存加速器的详细解决方案 |- Varnish_cache.pdf(中文版) |- 在Varnish架构上编程的注意点(中文)-Varnish开发者
一款高性能的开源HTTP加速器,2006年发布的第一个版本0.9,发展到目前很多门户网站已经部署了varnish,并且反应都很好,甚至反应比squid还稳定,且效率更高,资源占用更少。在反向代理,web加速方面,varnish已经有...
1. **VCL(Varnish Configuration Language)**:Varnish使用一种名为VCL的语言来定义缓存策略。VCL是一种声明式语言,允许用户控制如何处理HTTP请求和响应,包括决定哪些内容应该被缓存,以及如何缓存。 2. **存储...
Varnish是一款高性能的HTTP加速器,由Poul-Henning Kamp开发,他也是FreeBSD内核的开发者之一。Varnish的主要目标是提高网站的响应速度和整体性能,通过缓存网页内容来减少对服务器的直接请求。自2006年发布首个0.9...
Varnish是一款高性能的HTTP缓存服务器,用于加速网站的内容加载速度。Varnish缓存清除,也称为缓存刷新或缓存淘汰,是管理Varnish缓存内容的重要环节,确保内容更新能够及时反映到用户面前。本教程将详细介绍Varnish...
Linux安装配置varnish web加速器.
Varnish是一款高性能的开源HTTP加速器
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (http://www.vg.no) 使用3台Varnish代替了原来的12台squid,性能居然比以前更好。 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者...
Varnish缓存命中率是衡量Varnish缓存服务器性能的关键指标,它反映了服务器能够从缓存中直接提供响应的请求比例。高缓存命中率意味着更多的流量被有效地处理,减少了对后端服务器的压力,提高了网站的整体性能。本文...
《高命中率的Varnish缓存配置详解》 Varnish是一款高性能的HTTP反向代理缓存服务器,它能够显著提升网站的响应速度和并发处理能力。在本文中,我们将深入探讨如何配置Varnish以实现高命中率的缓存策略,从而提高...
2. Varnish配置:Varnish使用VCL(Varnish Configuration Language)进行配置,这是一种简洁的编程语言,允许用户定义缓存策略。通过VCL,你可以控制哪些请求应该被缓存,哪些应该直接传递到后端服务器。 3. 缓存...
Varnish是一款强大的开源HTTP缓存加速器,其6.2.0版本是该软件的一个稳定发行版。这个版本在前一版本的基础上进行了优化和增强,旨在为用户提供更高效、更可靠的Web服务性能。Varnish的核心功能在于接收HTTP请求,并...
但是,根据“【标题】”和“【描述】”中提供的信息,我们可以知道这是一本名为《Varnish权威指南(中文版)》的电子书,这本书是关于Varnish的,Varnish是一个高性能的开源Web应用加速器(也叫做HTTP反向代理服务器...
整体而言,Varnish缓存作为Web服务的加速器,在面对高并发场景时,表现出了显著的性能优势。通过缓存静态内容并减少对后端服务器的请求,Varnish能够降低延迟、提高吞吐量,从而改善用户体验。然而,对于Varnish的...
Varnish使用了“VisualPageCache”技术,优化了内存使用,避免了频繁的内存与磁盘文件交换,从而比Squid等同类产品有更高的性能。 在Linux环境下配置Varnish时,需要对配置文件进行定制化设置。配置文件通常位于/...
Varnish是一个高性能的HTTP缓存/加速器,通常用于减少服务器负载并提高网站响应速度。通过使用“laravel-varnishable”,开发者可以轻松地配置和管理Varnish,以优化Laravel应用的性能。 【描述】:“Laravel开发-...
一种常见的性能优化手段是使用缓存服务器,比如Varnish,它是一种高性能的HTTP反向代理加速器,用来缓存动态内容,提高网站响应速度。 然而,缓存也有其弊端,即当网站内容更新后,用户可能会看到过时的信息,因为...
Varnish是一款高性能、开源的反向代理服务器和缓存服务器,其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。