[文章作者:张宴 本文版本: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与存储 | 评论(8717) | 引用(0) | 阅读(844076)
macy's.com/gcbalance Email
2024-4-9 15:26
Give your gift card to a customer service rep or cashier and ask them to determine the balance on the present card. They should be in a position to scan your card and let you know what the amount of balance is.macy's.com/gcbalancemacy's gift card balance Checkmacy's gift card balancemacys gift card balance
simran Email
2024-4-9 15:53
Delivering actionable insights that result in measurable business outcomes is at the core of Probyto <a href="https://probyto.com/bi-reporting/">Business Intelligence services</a>. Businesses may increase ROI, streamline operations, and improve processes by utilizing data-driven insights, giving them a competitive advantage in the marketplace.
mridul2024
2024-4-9 20:32
Helperji's Personal Security Services are a testament to their dedication to quality. They provide a level of security that goes beyond traditional measures, giving their clients peace of mind, with an emphasis on cutting-edge tactics and technology.Personal Security Services
mridul2024 Email Homepage
2024-4-9 20:34
Helperji's dedication to quality is evident in their PSO Security Services. They give their clients peace of mind by providing a level of security that beyond traditional measures, with an emphasis on cutting-edge tactics and technology.PSO Security Services
mridul2024 Email Homepage
2024-4-9 20:38
Helperji's dedication to quality is evident in their PSO Security Services. They give their clients peace of mind by providing a level of security that beyond traditional measures, with an emphasis on cutting-edge tactics and technology.PSO Security Services
mridul2024 Email Homepage
2024-4-9 20:40
Helperji's dedication to quality is evident in their PSO Security Services. They give their clients peace of mind by providing a level of security that beyond traditional measures, with an emphasis on cutting-edge tactics and technology.PSO Security Services
lebanon hash Email Homepage
2024-4-13 11:51
lebanon hashAwesome! Really appreciate it, man.
Royjassunneee Email
2024-4-13 16:45
证码Metamask operates as a browser extension, compatible with major browsers such as Chrome, Firefox, and Brave. It serves as a digital wallet, enabling users to manage their cryptocurrency holdings and interact with decentralized applications directly from their browser. Additionally, Metamask provides robust security features, including encryption and password protection, to safeguard users' funds and private keys. Metamask Extension | Metamask Extensionhttps://sites.google.com/1metamask-login.com/metamaskextension/homehttps://sites.google.com/1metamask-login.com/metamask-extension/home
smith Email Homepage
2024-4-14 17:51
Securely manage your cryptocurrency with the MetaMask Extension for Chrome and Firefox. Download the Metamask wallet extension now and take control of your digital assets. Metamask wallet extension | Metamask wallet extension
smiyh Email Homepage
2024-4-16 01:08
Simplify your crypto transactions with Rabby Wallet, Phantom Extension, and HashPack Wallet. Easily manage your digital assets and secure your investments in one place. Get started now.  Rabby Wallet | Phantom Extension | HashPack Wallet
jainifar Email
2024-4-16 19:30
Experiencing buffering issues on Pelisplus? Learn how to troubleshoot and fix playback problems for seamless streaming. Click for solutions!Don't miss out on the latest releases! Explore Pelisplus for the newest movies and series updates. Click here to stay informed!Upgrade your streaming setup with our top device recommendations for seamless Cuevana 3 enjoyment.Cuevana 3  |  Pelisplus
jainiafar Email
2024-4-16 19:31
Experiencing buffering issues on Pelisplus? Learn how to troubleshoot and fix playback problems for seamless streaming. Click for solutions!Don't miss out on the latest releases! Explore Pelisplus for the newest movies and series updates. Click here to stay informed!Upgrade your streaming setup with our top device recommendations for seamless Cuevana 3 enjoyment.Cuevana 3  |  Pelisplus
ij.start.canon/connect Email Homepage
2024-4-17 03:35
Canon ij printer is a complete solution for multiple works that you can easily learn to set up from ij.start.canon/connect and get a better experience. This is the official online support site that provides you Canon products’ online manuals, function information, and more. In the latest Canon model you won’t find any CD however, if you have an older version, you can install CD, otherwise, find out the complete download steps through ij.start.canon for Canon printer drivers
Copernic Desktop Search License Key Email Homepage
2024-4-19 18:04
NYC Great Post, Glad to read the Post. It is very informative for us.Thanks for posting, Seo Master.<a href="https://cracxpro.net/copernic-desktop-search-crack/">Copernic Desktop Search</a>
Lobstr Wallet Email Homepage
2024-4-22 17:35
Coinbase Wallet Extension, Lobstr Wallet, and WalletConnect are tools for managing cryptocurrencies. Coinbase Wallet Extension facilitates browser-based management, Lobstr Wallet is a mobile app focused on Stellar blockchain assets, and WalletConnect enables secure communication between mobile and desktop wallets.Read More -Coinbase Wallet ExtensionLobstr WalletWalletConnect
jack Email
2024-4-22 20:52
BTC Markets is a prominent cryptocurrency exchange that allows users to trade a variety of digital assets, including Bitcoin (BTC), Ethereum (ETH), and many others. To start trading or managing your cryptocurrency portfolio on BTC Markets, you need to log in to your account securel验证y. In this guide, we'll walk you through the BTC Markets login process, ensuring a smooth and secure experience.BTC Markets Login | BTC Markets Login
best nda coaching in dehradun Email
2024-4-23 12:22
Looking to join the best nda coaching in dehradun? Look no further! RANTRA offers top-notch courses including nda foundation coaching in dehradun, NDA, cds coaching in dehradun.
asmaqwerty Email Homepage
2024-4-24 02:49
Thank you for sharing this informative article. What a great post and a great story. Thank you author for your wonderful article. I really found valuable information here.<a href="https://freeforfile.com/movavi-slideshow-maker-key/"> Movavi Slideshow Maker Crack </a>https://freeforfile.com/movavi-slideshow-maker-key/
pg in chandigarh Email
2024-4-24 13:39
Pg For You is a result oriented website that aims to help students to find pg in chandigarh with food. For You and book their rooms.  pg chandigarh sector 34 with food are available on PG For You platform. This website is specifically curated to cater to the requirements of Students in Chandigarh struggling to find most suitable PGs. Check Best pg chandigarh sector 22  on PG For You.
shira Email
2024-4-24 19:21
Trust Wallet extension primarily operated as a mobile cryptocurrency wallet, available on both Ledger Live Wallet is a software application developed by Ledger, a company known for its hardware wallets used for securely storing cryptocurrencies.
分页: 420/436 第一页 上页 415 416 417 418 419 420 421 422 423 424 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]