架构师日记——VCL介绍和使用
VCL簡(jiǎn)介
基本語(yǔ)法介紹
聲明backend
可以配置多個(gè)后臺(tái)ip和端口
backend abc{.host = "127.0.0.1";//ip.port = "8080";//端口.connect_timeout = 1s;//連接超時(shí)時(shí)間.first_byte_timeout = 5s;//等待從backend傳輸過(guò)來(lái)的第一個(gè)字符的時(shí)間.between_bytes_timeout = 2s;//兩個(gè)字符的間隔時(shí)間.max_connections=100;//最大連接數(shù) } backend jkl{.host = "127.0.0.1";.port = "9090"; }若只有一個(gè)那不需要聲明導(dǎo)向哪個(gè)backend,配置了多個(gè)backend則需要,如
sub vci_recv{if(req.request == "GET"){req.backend=abc;} }director
director是backend的邏輯分組或backend的集群。主要有隨機(jī)、循環(huán)和DNS集中director,不同類型的director具有不同的算法來(lái)選擇backend。比如隨機(jī)的director示例如下:
director b2 random{//隨機(jī)選.retries = 5;{.bakend =abc;//已配置的backend.weigth = 7;//被選中的權(quán)重}{.bakend =jkl;.weigth = 3;} }指向director可以這樣配置
set req.backend = b2;隨機(jī)的director又分成三種,分別是random、client、hash,他們采用同樣的隨機(jī)分發(fā)算法,只是種子數(shù)值不同,種子數(shù)分別采用隨機(jī)數(shù)、客戶端id或者是緩存的hash(典型的url)
1.client director
你可以通過(guò)設(shè)置VCL變量client.identity來(lái)區(qū)分客戶端,值可以從session cookie或其他相似的值來(lái)獲取
2.hash director
默認(rèn)使用URL的hash值,可以通過(guò)req.hash獲取到
3.round-robin director
它沒(méi)有什么選項(xiàng)就是一次循環(huán)使用backend,第一個(gè)請(qǐng)求用第一個(gè)backend,第二個(gè)請(qǐng)求使用第二個(gè),如此類推。
4.dns director
有兩種不同的方法來(lái)選擇后端,一種是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"; }這段代碼會(huì)指定384個(gè)后端,都是用80端口及0.4s的連接超時(shí),.list生命中設(shè)置選項(xiàng)必須在IPS的前面。.ttl定義DNSlookups的時(shí)間。
5.fallback director
選擇第一個(gè)健康的backend,若先定義的backend沒(méi)有down就選先定義的,實(shí)例:
director b3 fallback{{.backend = www1;}{.backend = www2;}{.backend = www3;} }probe(后端探針)
探測(cè)后端,確定他們是否健康,返回的狀態(tài)用req.backend.healthy核對(duì):
backend jkl{.host = "127.0.0.1";.port = "9090";.probe = p1; } probe p1{.url = "/test.jpg";//訪問(wèn)backend的路徑,默認(rèn)是"/".timeout = 0.3s;//定義probe的過(guò)期時(shí)間,默認(rèn)是2s.window = 8;//要檢查后端服務(wù)器的次數(shù),默認(rèn)是8.threshold = 3;//.windos里面要有多少polls成功就認(rèn)為后端是健康的,默認(rèn)是3.initial = 3;//當(dāng)varnish啟動(dòng)的時(shí)候,要確保多少個(gè)probe正常,默認(rèn)是3.internal = 6s;//probe多久檢查一次后端,默認(rèn)是5s.request = "GET / HTTP/1.1""Host:www.abc.com"//設(shè)置詳細(xì)的請(qǐng)求頭,是一些字符串 }Acls
訪問(wèn)控制列表,示例如下
apl local{"localhost";"192.0.2.0"/24;//匹配主機(jī)名為192.0.2.0的主機(jī)!"192.0.2.23";//不匹配ip為192.0.2.23的主機(jī) }匹配示例:
if(client.ip ~ local){... } if(!client.ip ~ local){... }總結(jié)
以上是生活随笔為你收集整理的架构师日记——VCL介绍和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HP SureStore 磁带机 - 在
- 下一篇: C++ 通讯录管理系统