潇湘夜雨移动版

主页 > 软件与服务 >

varnish缓存服务器配置(3)

vcl的工作方式是基于状态引擎(state engine)来实现的;上图说明:
   vcl_recv的结果如果可以查询缓存并可以识别,那就要到vcl_hash这步了,如果无法识别那就通过pipe(管道)送给vcl_pipe,如果能识别,但不是一个可缓存的对象,那就通过pass送到vcl_pass去,vcl_hash之后就可查看缓存中有没有了,有这个请求的对象就表示命中(vcl_hit),如果没有那就表示未命中(vcl_miss),如果命中的就可以直接通过deliver直接送给vcl_deliver响应了,如果未命中就通过fetch交给vcl_fatch去后端服务器上去取数据,取回数据之后如果数据可以缓存就缓存(cache),本地缓存完之后再构建响应,如果不可以缓存就不做缓存交给vcl_deliver响应了;而如果命中了交给vcl_pass,交给pass之后就要到Fetch objet from backend后端服务器上去取数据了,这是因为这个命中的对象可能是过期或者是要做单独立额外的处理的;这就是vcl的状态引擎过程。

 

一、安装实现过程:

# 安装varnish,版本是3.0.4-1.el6

[root@node0 ~]# rpm -ivh varnish-3.0.4-1.el6.x86_64.rpm varnish-docs-3.0.4-1.el6.x86_64.rpm varnish-libs-3.0.4-1.el6.x86_64.rpm

[root@node0 ~]# rpm -ql varnish  # 查看varnish的安装文件
[root@node0 ~]# vim /etc/sysconfig/varnish  # 查看配置文件
NFILES=131072        # 所能够打开的最大文件数
MEMLOCK=82000        # 用多大内存空间保存日志信息
DAEMON_COREFILE_LIMIT="unlimited"    # 进程核心转储所使用的内存空间,unlimited表示无上限
RELOAD_VCL=1        # 重新启动服务时是否重新读取VCL并重新编译的
VARNISH_VCL_CONF=/etc/varnish/default.vcl    # 默认读取的VCL文件
VARNISH_LISTEN_PORT=80    # 监听的端口,默认监听6081
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1    # 管理接口监听的地址
VARNISH_ADMIN_LISTEN_PORT=6082    # 管理接口监听的端口
VARNISH_SECRET_FILE=/etc/varnish/secret    # 使用的密钥文件
VARNISH_MIN_THREADS=1    # 最少线程数
VARNISH_MAX_THREADS=1000    # 最大线程数
VARNISH_THREAD_TIMEOUT=120    # 线程的超时时间
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin    # 基于文件存储时的文件路径
VARNISH_STORAGE_SIZE=1G    # 存储文件的大小
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"    # 存储的文件格式
VARNISH_TTL=120    # 联系后端服务器的超时时间
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
            -f ${VARNISH_VCL_CONF} \
            -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
            -t ${VARNISH_TTL} \
            -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
            -u varnish -g varnish \
            -S ${VARNISH_SECRET_FILE} \
            -s ${VARNISH_STORAGE}"    # 使用定义的各高级配置的参数

# 定义后端服务器
[root@node0 sysconfig]# cd /etc/varnish/ 

[root@node0 varnish]# cp default.vcl default.vcl.bak

[root@node0 varnish]# mv default.vcl test.vcl

[root@node0 varnish]# vim test.vcl 
backend webserver {
 .host = "172.16.27.1";  # 后端服务器的地址
 .port = "80";           # 后端服务监听的端口

}

# 启动服务

[root@node0 sysconfig]# service varnish start
Starting varnish HTTP accelerator:                         [  OK  ]
[root@node0 sysconfig]# 

 

# 可以进入varnish的命令操作,进去后直接输入help就可以查看帮助信息;
[root@node0 varnish]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
200 201     
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-431.el6.x86_64,x86_64,-smalloc,-hcritbit

Type 'help' for command list.
Type 'quit' to close CLI session.

varnish> help
200 377     
help [command]
ping [timestamp]
auth response
quit
banner
status
start
stop
stats
vcl.load <configname> <filename>
vcl.inline <configname> <quoted_VCLstring>
vcl.use <configname>
vcl.discard <configname>
vcl.list
vcl.show <configname>
param.show [-l] [<param>]
param.set <param> <value>
purge.url <regexp>
purge <field> <operator> <arg> [&& <field> <oper> <arg>]...
purge.list
(责任编辑:liangzh)