提醒:本文最后更新于 2850 天前,文中所描述的信息可能已发生改变,请仔细核实。
被@青阳怂恿,更新完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变更明细说明》
哇咔咔,青阳是谁?不才,正是在下…………………
@青阳: 给你加上链接了。。。 定时文章。。。忘记加了
@青阳: 话说你那边的七牛头像cdn挂了。。。诶。。。何苦用七牛呢。。。话说Varnish 4很多io-wait啊
@kn007: 那是他加了s的原因吧,我的没挂啊。
@小怪物: 恩,是的,青阳有跟我说了。不小心被我黑了。哈哈哈
varnish、redis、memcached、xcached、zendXXXX、elXXXX、w3tc这些是同一类么,功能上有哪些是相同的,用其一可以不用其二的,又有哪些是互补的?
@小怪物: 不同类,都可以共存。elaxxx和xcache选其一,其实这两个可以抛弃,直接使用zendopcache就好了。其他共存没问题。w3tc对vps的意义要看情况,对我来说,反而慢了
@小怪物: 我现在是Vanish+Redis+ZendOpcache+Memcached(优先)+Memcache(次要)+igbinary(算法)+jemalloc(内存管理)
@kn007: 今天才从什么地方看到了jemalloc,还有什么nginx pagespeed,hhvm
@小怪物: 用hhvm不如用php5.7
@小怪物: 太高深了,搞不懂,话说我说一个一个get的还没弄明白,找了些教程帖一般都是旧版本的,有些目录关系,文件关系还没弄明白
@小怪物: 额。。。这个应该不难懂。。估计你没明白之间关系
@kn007: 恩了,就是有些目录、文件新旧版本不一样,对应关系什么没弄清楚
@小怪物: 目录?文件?新旧?不大明白你想表达的
@kn007: 一般的教程都是ubuntu10.04环境,和比如nginx安装后的一些配置文件在10.04和12.04、14.04都不一样,教程中说的文件可能在14.04中叫找不到、目录也是,象有个什么sites-enabled目录,在14.04中就没有这个目录。
@小怪物: 额,那这个就不晓得了。按道理,不需要考虑目录问题。一直centos。。apt-get可能安装的不一样吧,编译都是一致的
这词真心没接触过,呵呵,IT涉及的东西真多。
@郑永: 额,一个反代加速而已
@kn007: 完全不懂,过来看文章涨姿势。
@be.truth: 好吧...