架构师日记——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 磁带机 - 在
- 下一篇: 【翻译】HyNet: Learning