varnish缓存策略之director
来源:互联网 发布:男士滑雪帽 知乎 编辑:程序博客网 时间:2024/05/18 03:48
varnish 允许定义多个backend后端服务器,那么如何如何实现负载均衡呢
可以通过后端服务器控制组来管理:即定义 director 来管理
1.典型的backend配置
# 第一个backendbackend server1 {.host = "127.0.0.1";#web服务器或者应用服务器IP地址.port = "80";#web服务器或者应用服务器端口}# 第二个backendbackend server2 {.host = "127.0.0.2";#web服务器或者应用服务器IP地址.port = "80";#web服务器或者应用服务器端口}
2.director定义
像这种有多个后端服务器的配置,就得挑选一种策略来管理
varnish 提供多种算法,比如循环、随机、hash路由、client路由、dns等方式
(1))round-robin 采用循环的方式依次选择backend
(2)random 根据所设置的权重(weight)来选择 backend
(3)client 根据请求的客户端属性(IP、cookie、session)来选择 backend
(4) hash 根据hash表来选择
(5))dns 根据dns解析来选择
2.1 round-robin
director server_director round-robin {{.backend = server1;}{.backend = server2;}#还可以继续定义}
2.2 random
director server_director random {.retries = 5;#表示varnish尝试找到一个 backend 的最大次数{.backend = server1; .weight = 2;}{.backend = server2; .weight = 1;}}
2.3 client
生产系统一般都是集群环境,且基本都是[会话保持]也就是[sticky session]
所谓 session粘性,能保证你访问一个Url之后,在这个站点打开的其他Url,都是去访问同一个服务器
因此针对这种情况,如果varnish没找到缓存内容,那么对这个用户而言:所有请求会到一个固定的后端服务器
好处就是:如果有多层级缓存架构,那么你不用担心缓存链匹配不正确
当然session粘性的坏处大家都知道,一但那台机器挂了。。。也会指向那台机器
针对 client 的配置策略,建议去varnish官网看例子:http://mesmor.com/2012/02/15/varnish-client-director-with-sticky-session/
director server_director client {{.backend = server1; .weight = 2;}{.backend = server2; .weight = 1;}}
注意:如果选用client算法,别忘了设置client的唯一标志identity,在 vcl_recv 节点配置
sub vcl_recv {set client.identity = req.http.cookie; #或者 http.ip #... 其他配置}
2.4 hash
hash表的原理和client差不多,配置也相似
director server_director hash {{.backend = server1; .weight = 2;}{.backend = server2; .weight = 1;}}
2.5 dns
director server_director dns { .list = { .host_header = "www.xxx.com"; .port = "80"; .connect_timeout = 0.4; "192.168.15.0"/24; # IP段 0~255 "192.168.16.128"/25; } .ttl = 5m; #查找缓存时间 .suffix = "xxx.com"; #主机名后缀 }
最后注意:定义好director之后,在要使用的地方先声明:比如sub_recv函数里面
sub vcl_recv {set req.backend = server_director;#... 其他配置}
- varnish缓存策略之director
- 缓存服务器之varnish
- Varnish缓存更新策略调试过程
- varnish缓存策略及缓存时间计算方法说明
- Varnish缓存
- Spark之缓存策略
- cdn加速之varnish反向代理缓存加速服务器
- Varnish purges 缓存清除
- Web缓存(Varnish方案)
- Web缓存(Varnish方案)
- Varnish 缓存服务器
- Varnish缓存服务器原理
- Web缓存 --- Varnish方案
- varnish缓存配置详解
- 学习之http缓存策略
- MyBatis缓存策略之二级缓存
- elasticsearch之字段缓存策略
- elasticsearch之缓存清除策略
- 聚美优品面试题
- Xcode6 自动补全的问题 no completion
- java4:选择语句(selection),逻辑运算,循环(loop)
- 我的IOCP学习笔记 - 运行展示
- JAVA ----socket学习
- varnish缓存策略之director
- 剑指offer面试题(49)把字符串转换成整数
- org.springframework.web.servlet.DispatcherServlet noHandlerFound 警告: No mapping found for HTTP reque
- 写给大二学期末的我
- MediaPlayer中使用到的回调函数介绍
- 打开关闭系统图标音量、电源、网络、操作中心不能编辑解决办法
- BZOJ2326 [HNOI2011]数学作业
- 程序员要知道的事情
- Qt 使用小记