缓存服务器varnish


linux varnish



  • 缓存服务器varnish

    • varnish squid 简单介绍

    • 安装与部署varnish

    • 介绍下varnish配置信息:


varnish squid 简单介绍

挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好

Varnish是一款高性能、开源的反向代理服务器和缓存服务器.其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。Varnish采用VCL的配置,而且具有强大的管理功能,如top、stat、admin、lis,管理方式比较灵活。Varnish的状态机设计不仅巧妙,结构也很清晰,利用二叉堆管理缓存文件,即可达到随时删除的目的。。目前Varnish3.0版本解决了服务器重启后Varnish缓存消失的问题,性能优化上有了更大的提升。

Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 
varnish主页

Varnish和Squid的对比

  • Varnish和Squid在完成相同负载的工作时,Squid服务器发生故障的几率要高于Varnish,因此Squid需要经常重启。

  • Varnish访问速度更快,Varnish采用了 Visual Page Cache技术,所有缓存的数据都直接从内存读取,而Squid从硬盘读取缓存的数据,Varnish在访问速度方面会更快一些。

  • Varnish可以支持更多的并发连接,因为Varnish的TCP连接与释放比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。

  • Varnish可以通过管理端口来管理缓存,使用正则表达式就可以批量清除部分缓存,而Squid做不到这一点。 
     

安装与部署varnish

主机环境:

1.$ uname -r
2.2.6.32-573.el6.x86_64
3.$ cat /etc/redhat-release
4.CentOS release 6.7 (Final)
  1. 安装varnish 

    $ rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm 
    $ yum install varnish 

    对于是Ubuntu系统,可以执行以下命令来安装: 
    curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -echo “debhttp://repo.varnish-cache.org/ubuntu/ precise varnish-3.0” | sudo tee -a /etc/apt/sources.listsudo apt-get updatesudo apt-get install varnish

  2. 把文件备份 

    $ cp /etc/varnish/default.vcl /etc/varnish/default.vcl.backup 
    $ cp /etc/sysconfig/varnish /etc/sysconfig/varnish.backup 

  3. 开启varnish

1./etc/init.d/varnish start
2.[root@varnish ~]# netstat -tanp|grep varnish
3.tcp        0      0 0.0.0.0:6081                0.0.0.0:*                   LISTEN      1640/varnishd      
4.tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1639/varnishd      
5.tcp        0      0 :::6081                     :::*                        LISTEN      1640/varnishd  

这里要注意一下,有可能会报错

1.[root@nginx01 varnish]# /etc/init.d/varnish start
2.Starting Varnish Cache:                                    [FAILED]

那么就查看下日志吧

1.[root@nginx01 lib]# varnishlog 
2.Can't open VSM file (Cannot open /var/lib/varnish/nginx01/_.vsm: No such file or directory
3.)

什么情况,为什么没有这个目录,既然没有那么就手动创建一个呗然后再启动,发现还是不行,我擦 
这是什么情况,好吧,那么手动执行一下试试。。。

1.[root@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
2.Message from VCC-compiler:
3.Unused acl purge, defined:
4.('input' Line 20 Pos 5)
5.acl purge {
6.----#####--
7.
8.Running VCC-compiler failed, exited with 2
9.
10.VCL compilation failed
11.[root@nginx01 varnish]# vim /etc/varnish/default.vcl
12.[root@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
13.Platform: Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
14.200 280    
15.-----------------------------
16.Varnish Cache CLI 1.0
17.-----------------------------
18.Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
19.varnish-4.0.3 revision b8c4a34
20.
21.Type 'help' for command list.
22.Type 'quit' to close CLI session.
23.Type 'start' to launch worker process.

我快崩溃不这是为什么呢。。。找了半天原因,原来是selinux没有半,我擦,看来不关的确会出很多问题啊,关闭后就没有出此问题啦。完美解决。 

  1. 接下来要做的,就是修改apache的监听端口,将varnish监听端口指向80,将apache监听端口指向一个其他端口,再将varnish出口端口指向apache指向的端口。这样,client–>端口80–>varinsh检测cache–>apache->client

1.$ vim /etc/sysconfig/varnish
2.VARNISH_LISTEN_PORT=80
3.
4.$ vim /etc/varnish/default.vcl
5.backend default {
6..host = "127.0.0.1";
7..port = "8880";
8.}
9.
10.$ vim /etc/httpd/conf/httpd.conf
11.Listen *:8880
12.8880>
13.ServerAdmin gsandow.com
14.DocumentRoot /data/www/html/
15.ErrorLog logs/sample-error.log
16.CustomLog logs/sampleaccess_log common
17.

介绍下varnish配置信息:

查看varnish的各种命令

1.[root@apache01 blog]# ll /usr/bin/varnish*
2.-rwxr-xr-x 1 root root  23656 Feb 18  2015 /usr/bin/varnishadm
3.-rwxr-xr-x 1 root root  29824 Feb 18  2015 /usr/bin/varnishhist
4.-rwxr-xr-x 1 root root  32576 Feb 18  2015 /usr/bin/varnishlog
5.-rwxr-xr-x 1 root root  45344 Feb 18  2015 /usr/bin/varnishncsa
6.-rwxr-xr-x 1 root root  32224 Feb 18  2015 /usr/bin/varnishstat
7.-rwxr-xr-x 1 root root 132544 Feb 18  2015 /usr/bin/varnishtest
8.-rwxr-xr-x 1 root root  41632 Feb 18  2015 /usr/bin/varnishtop

varnish命令

  • varnishadm 管理Varnish后端的工具 telnet也可以(下面详细介绍)

  • varnishhist 查看Varnish命中的工具 运行可以看到一张柱状描绘图,|表示缓存命中,#表示未命中,横向代表时间。 【非常有用】

  • varnishlog 实时显示varnish的请求日志

  • varnishncsa 以Apache标准的格式combined输出日志

  • varnishstat 查看状态、参数等,具体查阅百度。【非常有用】

  • varnishtop 类似top工具,查看varnish相关进程的资源、运行等状况。

文件位置

  • /etc/varnish/ 存放varnish VCL配置文件

  • /etc/sysconfig/varnish 【CentOS】 存放varnish服务器运行的参数

  • /etc/default/varnish 【Ubuntu】 存放varnish服务器运行的参数

  • /usr/sbin/varnishd varnish服务器执行文件

  • /etc/init.d/varnish 运行程序