varnish利用实现对后端单双静态web服务器的缓存
varnish包的下载路径: 可以下载到varnish的rpm包
需要下载的有:
varnish-3.0.5-1.el6.x86_64
varnish-docs-3.0.5-1.el6.x86_64
varnish-libs-3.0.5-1.el6.x86_64
varnish的官网地址:https://www.varnish-cache.org/
实验环境:
web1:172.16.18.3 Nginx
web2:172.16.17.12 Nginx
varnish:172.16.18.1 Varnish
实验内容:
一,安装varnish包,配置web服务器
[root@node1~]# rpm -ql varnish
/etc/rc.d/init.d/varnish #varnish的启动程序
/etc/rc.d/init.d/varnishlog #日志
/etc/rc.d/init.d/varnishncsa #日志
/etc/sysconfig/varnish #配置文件,varnish定义自身属性
/etc/varnish #配置文件目录
/etc/varnish/default.vcl #默认配置文件,定义后端节点的
/usr/bin/varnish_reload_vcl #加载vcl,
/usr/bin/varnishadm #客户端程序
/usr/bin/varnishstat #状态监控
二,编辑配置文件
[root@node1 ~]# vim /etc/sysconfig/varnish
NFILES=131072
MEMLOCK=82000
NPROCS="unlimited"
RELOAD_VCL=1 #是否重载VCL文件
## Alternative 3, Advanced configuration
VARNISH_VCL_CONF=/etc/varnish/default.vcl #vcl文件路径
VARNISH_LISTEN_PORT=80 #varnish自己工作于那个端口。默认是6081
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 #管理接口
VARNISH_ADMIN_LISTEN_PORT=6082 #管理接口监听端口
VARNISH_SECRET_FILE=/etc/varnish/secret #密钥文件
VARNISH_MIN_THREADS=50 #最少空闲线程
VARNISH_MAX_THREADS=1000 #最多启动线程
VARNISH_THREAD_TIMEOUT=120 #work超时时长
#VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin #存储文件
VARNISH_STORAGE_SIZE=64M #存储文件文件大小
#VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}" #存储方式file
VARNISH_STORAGE="malloc,${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@node1 ~]# vim /etc/varnish/default.vcl
backend default {
.host = "172.16.18.3";
.port = "80";
}
此时varnish就已经可以启动了。下来就是最重要的编写vcl文件。
------------------------------------------------------------
CentOS 5.8下Varnish-2.1.5的安装配置
RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish
-----------------------------------------------------------------------------------
那么我们就应该熟悉这张表,每一个状态引擎所对应的变量
简单介绍一下vcl的语法
VCL的设计参考了C和Perl语言,因此,对有着C或Perl编程经验者来说,其非常易于理解。其基本语法说明如下:
(1)//、#或/* comment */用于注释
(2)sub $name 定义函数
(3)不支持循环,有内置变量
(4)使用终止语句,没有返回值
(5)域专用
(6)操作符:=(赋值)、==(等值比较)、~(模式匹配)、!(取反)、&&(逻辑与)、||(逻辑或)