[文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.zyan.cc]

  我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。

  今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。

  在我看来,使用Varnish代替Squid的理由有三点:
  1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
  2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
  3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。

  点击在新窗口中浏览此图片


  下面来安装Varnish网站缓存加速器(Linux系统):
  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.zyan.cc/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


  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.zyan.cc") {
               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.zyan.cc的请求进行处理,非blog.zyan.cc域名的请求则返回“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

  点击在新窗口中浏览此图片

  2、通过Varnish管理端口进行管理:
  用help看看可以使用哪些Varnish命令:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help

引用
Available commands:
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] []
param.set
help [command]
url.purge
dump.pool


  3、通过Varnish管理端口,使用正则表达式批量清除缓存:
  (1)、例:清除类似http://blog.zyan.cc/a/zhangyan.html的URL地址):
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/

  (2)、例:清除类似http://blog.zyan.cc/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 *$


  4、一个清除Squid缓存的PHP函数(清除Varnish缓存同样可以使用该函数,无需作任何修改,十分方便):


  附1:Varnish官方网站:http://www.varnish-cache.org/

  附2: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



Tags: , , ,



技术大类 » Cache与存储 | 评论(8393) | 引用(0) | 阅读(710548)
kuchesarfort Email Homepage
2021-11-10 17:18
Kuchesar Fort is one of the Weekend getaways near Delhi. You can enjoy your quiet weekend here with nature lovers, thrill-seekers, stargazers, and peace seekers. The weekend was the perfect combination of relaxation and adventure.
bengalparlour Email Homepage
2021-11-10 17:20
Our hair & beauty treatment services are of international class, and we have built a base of delighted clients over the past few years. Bengal beauty parlour is the best bridal parlour & men's hair salon in Meerut having a highly-trained and professional team of workers to make sure you are comfortable during the whole process from the moment you enter my office until the moment you leave. For more information contact us on +91 9897816965 or visit https://bengalbeautyparlour.com/
Olivia
2021-11-10 18:55
Thanks for such a valuable post. I am waiting for your next post, I have enjoyed a lot reading this post keep it up.Thank you so much for coming.Your energy and worldview never cease to inspire me, and I’m so happy we found the time to see my website. https://www.geeksscan.com/crackle-com-activate/    https://www.bingarticles.info/ https://getposttop.com/www-amazon-com-mytv-enter-amazon-activation-code
johnmathews Email Homepage
2021-11-11 03:20
AMAZING STUFF, KEEP UP THE GOOD WORK.office.com/setupoffice.com/setup
kleavondion Email Homepage
2021-11-11 17:12
Looking for the best spend management software available in 2019? Here are the top tools for solopreneurs, growing businesses,  enterprise companies.  quick solution
kleavondion Email Homepage
2021-11-11 17:14
Calculate and prepare your KuCoin taxes in under 20 minutes. Import trades automatically and download all tax forms & documents for KuCoin easily. Kucoin login
kleavondion Email Homepage
2021-11-11 17:42
The cp command will copy files and directories or copy multiple sources to a destination directory. The mv command will move or rename files or directories, or can move multiple sources (files and directories) to a destination directory. All in 1 Directory
kleavondion Email Homepage
2021-11-11 20:27
To add your Coinbase account to Mint, you need to let Coinbase know it;s okay to import your data into Mint. You control this and can revoke it at. Coinbase Pro Login
kleavondion Email Homepage
2021-11-11 20:29
Whether you are looking to invest in crypto or use it as a form of payment, you have likely heard of Coinbase. After all, with tens of millions of users, it;s one of the most popular cryptocurrency exchanges online. coinbase login
esthetique
2021-11-11 20:51
chirurgieesthetiquerhinoplastie esthetique
hbomax.com/tvsignin Email Homepage
2021-11-12 13:43
hbomax.com/tvsignin Enter Code is the site to activate HBO Max by entering the activation code online. HBO Max is one of the top OTT platforms at the moment. Once the website is open, you will have to provide HBO Max sign-in code which is a six-digit code that came up when you tried to log in to HBO Max on your TV or any other device. Get all the details about the hbomax.com/tvsignin Enter Code site in this article and stream HBO Max shows on your tv.
zareen Email Homepage
2021-11-12 13:57
HBO Max streams hbomax.com/tvsignin all the movies and shows on the regular HBO channel, as well as the originals, a large library of additional content and movies on the big screen while they're at the theaters.https://hbomaxcomtvsignincode.com/ https://hbomaxcomtvsignincode.com/
selena Email Homepage
2021-11-12 14:07
Where do I enter the code? On your phone or computer, go to hbomax.com/tvsignin . You should see an Enter Code page where you can enter the 6-character code from your TV .Open the Google Home app on your phone or tablet. Tap the device that you want to cast to. Tap Cast my screen > Cast screen. Once your screen appears on your TV, open HBO Max and start streaming.https://hbomaxcomtvsignincode.com/
robbyjakson Email Homepage
2021-11-12 16:12
Best Web Development Company In Delhi. who works with the experts web developers and web designers in this country.https://hariwebinfotech.com/https://hwiimportexport.com/https://hariwebinfotech.us/https://hariwebinfotech.co.uk/https:/...
olivilajhon08 Email
2021-11-12 17:05
Several factors matter when you choose the Microsoft 365 subscription. Depending on your requirements on the respective productivity platforms, these products are different in price. MS 365 is a cloud-based subscription productivity suite best suitable for individuals, businesses, and homes as users don’t have to worry about updates or any custom-related featureshttps://soft-365setup.com/https://microwsoft365setup.com/
olivilajhon08 Email
2021-11-12 17:06
These printers are best to use in industries due to precise print, speed, and economical features. Instead of ink, these models use toner powder to print. Though, LaserJet printers are costly than inkjet printers for home users but affordable and best for businesses, industries, and large organizations.https://123hp.com-laserjet.com/,https://istartsetup.com/https-ij-start-cannon/
Binance Clone Script Email Homepage
2021-11-12 22:00
Nice feed
watson6987 Email Homepage
2021-11-13 15:55
hbomax.com/tvsigninUser can activate some of the well-known devices like Smart TV, Roku, Apple TV, Xbox, PlayStation and other streaming media players on their TV. First, you need to visit the official HBO Max web portal and enter the 8-digit verification code during the activation process. This is because when you log into the HBO Max app on a Smart TV or other device, your device displays an 8-digit code. This is the HBO Max activation code that is used to log into the HBO Max service through the link hbomax.com/tvsignin. HBO MAX is easy to install on the TV by connecting the network and the TV together and allows users to watch videos anytime, anytime. Create your HBO MAX account and get access to a great selection of movies, TV shows, music, and other Roku store channels.hbomax.com/tvsignin
PGGAMESLOT Email Homepage
2021-11-14 13:37
pg  The latest with a game system designed for direct pg slot players because the game format is very advanced, can play pg slot auto via ios and android systems, supports playing pg slots via mobile Deposit-withdraw automatically in just 8 seconds
PGGAMESLOT Email Homepage
2021-11-14 13:37
ฝาก50รับ150   No need to turn or call each other easily understood is a promotion, deposit 50, get 150 wallet, is another promotion that many people like and think that it is a worthwhile promotion.
分页: 265/420 第一页 上页 260 261 262 263 264 265 266 267 268 269 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]