kn007的个人博客
♥ You are here: Home > 软件与网络 > VPS > 更新至Varnish 4.0,VCL变更明细说明

更新至Varnish 4.0,VCL变更明细说明

by | 20 Comments

提醒:本文最后更新于 2850 天前,文中所描述的信息可能已发生改变,请仔细核实。

varnishcache

@青阳怂恿,更新完Varnish 4后的感觉,感觉貌似不如Varnish 3快速,也有可能是错觉,不过从数据上和测试上,确实不如版本3,虽说安全提高,但是一些功能也用不了了。

只能说是干掉版本号。。。希望Varnish 4以后能更给力一点。。。

如无必要,建议大家不必升级到Varnish 4。

当然也不是全然无优点的,比如vcl显得逻辑更强了,recycle释放内存能力也相对变强这些。

安装很简单:

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-4.0/el6/noarch/varnish-release/varnish-release-4.0-4.el6.noarch.rpm
yum install varnish -y

至于新版本不同,还挺多的。

新版本Varnish4,client/backend分离,新的vanishlog查询语言,安全方面据说有提升。

首先是必须定义版本号: vcl 4.0。VMOD’s更独立化,官方推荐是加载Standard VMOD’s(std)。

另外director已变为VMOD,如需使用,需要import directors。

vcl_fetch函数被vcl_backend_response和vcl_backend_fetch代替,且req.*不再适用vcl_backend_response,只能使用bereq.*。

至于vcl_backend_fetch貌似没哪个doc见到详细用法。

error变更为return(synth(http_code,message)),req.backend成了req.backend_hint,req.request变更为req.method,obj为只读对象了。

vcl_synth采用resp.*,而非原来的obj.*。

vcl_error变更为vcl_backend_error,必须使用beresp.*,而不是obj.*。

关键字"purge;"命令,已被去除。在vcl_recv使用return(purge)。

hit_for_pass通过set beresp.uncacheable = true;来指定。

vcl_recv必须将lookup变更返回hash,vcl_hash必须将hash变更返回lookup,vcl_pass必须将pass变更返回fetch。

req.backend.healty被std.healthy(req.backend)代替,但是设置不了grace,鸡肋,被抛弃了,现在仅能做的就是keepalive的作用了。

req、bereq,resp、beresp之间不同,可被使用的位置不同。

server.port、client.port分别变更为std.port(server.ip)、std.port(client.ip),跟上面healthy一样,需要import std。

session_linger变更为timeout_linger,sess_timeout变更为timeout_idle,sess_workspace被抛弃了。

remove被完全弃用了,不过我一直用unset的说。

return(restart)变更为return(retry),vcl_backend_fetch会被使用到。

自定义sub函数不能以vcl_开头,调用方式call udf。

以上,就是我这次遇到过的问题,应该涵盖了大多数变化。

因为我本身的VCL内容多,所以算是比较麻烦。但好歹顺顺利利过了这关。

转载请注明转自:kn007的个人博客的《更新至Varnish 4.0,VCL变更明细说明

donate
有所帮助?

Comments

20 Comments立即评论
  1. LV1回复

    哇咔咔,青阳是谁?不才,正是在下…………………

    1. MOD回复

      @青阳: 给你加上链接了。。。 :o 定时文章。。。忘记加了 :???:

    2. MOD回复

      @青阳: 话说你那边的七牛头像cdn挂了。。。诶。。。何苦用七牛呢。。。话说Varnish 4很多io-wait啊

    3. @kn007: 那是他加了s的原因吧,我的没挂啊。

    4. MOD回复

      @小怪物: 恩,是的,青阳有跟我说了。不小心被我黑了。哈哈哈

  2. varnish、redis、memcached、xcached、zendXXXX、elXXXX、w3tc这些是同一类么,功能上有哪些是相同的,用其一可以不用其二的,又有哪些是互补的?

    1. MOD回复

      @小怪物: 不同类,都可以共存。elaxxx和xcache选其一,其实这两个可以抛弃,直接使用zendopcache就好了。其他共存没问题。w3tc对vps的意义要看情况,对我来说,反而慢了

    2. MOD回复

      @小怪物: 我现在是Vanish+Redis+ZendOpcache+Memcached(优先)+Memcache(次要)+igbinary(算法)+jemalloc(内存管理)

    3. @kn007: 今天才从什么地方看到了jemalloc,还有什么nginx pagespeed,hhvm

    4. MOD回复

      @小怪物: 用hhvm不如用php5.7

    5. @小怪物: 太高深了,搞不懂,话说我说一个一个get的还没弄明白,找了些教程帖一般都是旧版本的,有些目录关系,文件关系还没弄明白

    6. MOD回复

      @小怪物: 额。。。这个应该不难懂。。估计你没明白之间关系

    7. @kn007: 恩了,就是有些目录、文件新旧版本不一样,对应关系什么没弄清楚

    8. MOD回复

      @小怪物: 目录?文件?新旧?不大明白你想表达的

    9. @kn007: 一般的教程都是ubuntu10.04环境,和比如nginx安装后的一些配置文件在10.04和12.04、14.04都不一样,教程中说的文件可能在14.04中叫找不到、目录也是,象有个什么sites-enabled目录,在14.04中就没有这个目录。

    10. MOD回复

      @小怪物: 额,那这个就不晓得了。按道理,不需要考虑目录问题。一直centos。。apt-get可能安装的不一样吧,编译都是一致的

  3. 这词真心没接触过,呵呵,IT涉及的东西真多。

    1. MOD回复

      @郑永: 额,一个反代加速而已

    2. @kn007: 完全不懂,过来看文章涨姿势。 :lol:

    3. MOD回复

      @be.truth: 好吧... :o

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif