这篇文章将为大家详细讲解有关如何理解varnish,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
![](/upload/ad_content/xuanchuantu-20.jpg)
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为榕城企业提供专业的
网站设计制作、网站制作,
榕城网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。varnishi由management(主进程)和(child/cache)子进程组成
varnishi由management(主进程)和(child/cache)子进程组成
management的工作:
1、提供命令行接口
2、监控和管理子进程,初始化varnish
3、将default.vcl编译为二进制生成新的配置文件
child/cache的工作:
1、接收连接请求
2、处理用户请求
3、清除缓存中的过期对象
4、记录日志
5、根据default.vcl生成缓存策略
VCL:
1、缓存策略配置接口
2、基于"域"的配置
存储缓存对象:
flie:单个文件进行存储,不支持持久化,会产生大量磁盘i/o对性能有一定影响
malloc:内存存储,性能较高,代价更高(内存比磁盘贵),长时间使用会产生内存碎片
persistent:单个文件进行存储,支持持久化,目前作为测试使用
varnish安装:centos7环境
1、配置epel源
2、yum -y install varnish
varnish配置:
/etc/varnish/default.vcl #vcl配置文件
/etc/varnish/varnish.params #命令行参数配置文件
/etc/varnish/secret #连接命令行认证文件
varnish管理工具:
systemctl start varnish.service #启动varnish
varnish默认监听*:6081和127.0.0.1:6082,6081提供服务,6082提供管理
varnishadm #交互式命令行管理工具
varnishlog #交互式获取日志工具
varnishncsa #交互式获取日志工具(apache格式)
varnishstat #显示状态
varnishtop #排序
varnish.params详解:
VARNISH_VCL_CONF=/etc/varnish/default.vcl #指定vcl文件位置
VARNISH_LISTEN_PORT=6081 #指定服务端口,默认监听所有地址
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 #管理ip
VARNISH_ADMIN_LISTEN_PORT=6082 #监听端口
VARNISH_SECRET_FILE=/etc/varnish/secret #认证文件
VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G"
#缓存方式(单个文件缓存)
#VARNISH_STORAGE="malloc,256M" #缓存方式(内存缓存),不能同时启动
VARNISH_USER=varnish #程序用户
VARNISH_GROUP=varnish #程序组
#DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300" #进程池配置
varnish状态引擎详解:状态引擎用于对客户端请求进行判断并作出相应处理
vcl_recv:接收用户请求,判断如何处理
vcl_pass: 绕过缓存,不从缓存中查询内容,将请求直接传递给后端主机
vcl_pipe:无法解析请求类型,直接交给后端处理
vcl_hash:可缓存数据,通过hash进行处理
vcl_hit:缓存命中
vcl_deliver:将缓存数据返回给客户端
vcl_miss:缓存未命中
vcl_fetch:从后端主机获取内容,通过判断将内容放入缓存或,直接返回给客户端
vcl_error:如果请求出现错误,由varnishi构建错误页返回给客户端
varnish负载均衡集群算法:
random #随机
round-robin #轮询
fallback #备份
hash #固定后端
配置实例:
vcl 4.0; #varnish版本
probe cache { #定义健康检查函数
.url = "/index.html"; #检查的url
.timeout = 1s; #超时时间
.interval = 5s; #重试间隔
.window = 5; #重试次数
.threshold = 3; #重试三次成功则认为服务器在线
}
backend www1 { #定义后端主机
.host = "192.168.0.10"; #后端主机
.port = "80"; #监听端口
.probe = cache; #调用健康检查函数
}
backend www2 {
.host = "192.168.0.40";
.port = "80";
.probe = cache;
}
backend www3 {
.host = "192.168.0.70";
.port = "80";
.probe = cache;
}
import directors; #导入集群模块
sub vcl_init {
new www = directors.round_robin(); #使用轮询算法
www.add_backend(www1); #集群主机
www.add_backend(www2); #集群主机
www.add_backend(www3); #集群主机
}
sub vcl_recv {
set req.backend_hint = www.backend(); #将所有流量发送给www集群
}
关于如何理解varnish就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻标题:如何理解varnish-创新互联
分享链接:
http://cdkjz.cn/article/dcopoi.html