架构师日记——VCL介绍和使用
VCL简介
基本语法介绍
声明backend
可以配置多个后台ip和端口
backend abc{.host = "127.0.0.1";//ip.port = "8080";//端口.connect_timeout = 1s;//连接超时时间.first_byte_timeout = 5s;//等待从backend传输过来的第一个字符的时间.between_bytes_timeout = 2s;//两个字符的间隔时间.max_connections=100;//最大连接数 } backend jkl{.host = "127.0.0.1";.port = "9090"; }若只有一个那不需要声明导向哪个backend,配置了多个backend则需要,如
sub vci_recv{if(req.request == "GET"){req.backend=abc;} }director
director是backend的逻辑分组或backend的集群。主要有随机、循环和DNS集中director,不同类型的director具有不同的算法来选择backend。比如随机的director示例如下:
director b2 random{//随机选.retries = 5;{.bakend =abc;//已配置的backend.weigth = 7;//被选中的权重}{.bakend =jkl;.weigth = 3;} }指向director可以这样配置
set req.backend = b2;随机的director又分成三种,分别是random、client、hash,他们采用同样的随机分发算法,只是种子数值不同,种子数分别采用随机数、客户端id或者是缓存的hash(典型的url)
1.client director
你可以通过设置VCL变量client.identity来区分客户端,值可以从session cookie或其他相似的值来获取
2.hash director
默认使用URL的hash值,可以通过req.hash获取到
3.round-robin director
它没有什么选项就是一次循环使用backend,第一个请求用第一个backend,第二个请求使用第二个,如此类推。
4.dns director
有两种不同的方法来选择后端,一种是random或者round-robin;另一种是使用.list(list的方式不支持ipv6):
director directorname dns{.list = {.host_header="www.example.com";.port="80";.connection_timeout = 0.4;"192.168.15.0"/24;"192.168.16.128"/25;}.ttl = 5m;.suffix = "internal.example.net"; }这段代码会指定384个后端,都是用80端口及0.4s的连接超时,.list生命中设置选项必须在IPS的前面。.ttl定义DNSlookups的时间。
5.fallback director
选择第一个健康的backend,若先定义的backend没有down就选先定义的,实例:
director b3 fallback{{.backend = www1;}{.backend = www2;}{.backend = www3;} }probe(后端探针)
探测后端,确定他们是否健康,返回的状态用req.backend.healthy核对:
backend jkl{.host = "127.0.0.1";.port = "9090";.probe = p1; } probe p1{.url = "/test.jpg";//访问backend的路径,默认是"/".timeout = 0.3s;//定义probe的过期时间,默认是2s.window = 8;//要检查后端服务器的次数,默认是8.threshold = 3;//.windos里面要有多少polls成功就认为后端是健康的,默认是3.initial = 3;//当varnish启动的时候,要确保多少个probe正常,默认是3.internal = 6s;//probe多久检查一次后端,默认是5s.request = "GET / HTTP/1.1""Host:www.abc.com"//设置详细的请求头,是一些字符串 }Acls
访问控制列表,示例如下
apl local{"localhost";"192.0.2.0"/24;//匹配主机名为192.0.2.0的主机!"192.0.2.23";//不匹配ip为192.0.2.23的主机 }匹配示例:
if(client.ip ~ local){... } if(!client.ip ~ local){... }总结
以上是生活随笔为你收集整理的架构师日记——VCL介绍和使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: HP SureStore 磁带机 - 在
- 下一篇: C++ 通讯录管理系统