2013-01-08 41 views
3

在沒有停機的情況下以編程方式向個人後端服務器添加或移除個體後端服務器的最佳方式是什麼?我一直在尋找一個很好的例子,找不到一個。動態添加或刪除後端主機到光油

我希望能夠隨需求調整我的後端服務器。

謝謝!

山姆

回答

1

儘管這不是增加後端的最優雅的,甚至動態的方式,我會被定義在一個單獨的VCL的後端在default.vcl使用接近這一點,包括它

include "backend.vcl"; 

你在哪裏定義你的後臺和導演。例如

probe healthcheck { 
    .url = "/online"; 
    .interval = 15s; 
    .timeout = 0.3 s; 
    .window = 3; 
    .threshold = 1; 
    .initial = 1; 
} 

backend web1 { 
    .host = "10.1.2.1"; 
    .port = "80"; 
    .connect_timeout = 300s; 
    .first_byte_timeout = 5000s; 
    .between_bytes_timeout = 300s; 
    .probe = healthcheck; 
} 

director backendpool round-robin { 
    { .backend = web1; } 
} 

並使用backendpool作爲後端。然後使用shell腳本,ssh,自定義守護進程或者哪種方法適合您的需求,最好通過添加後端併爲varnish刷新重新更新backend.vcl

這種方法的問題在於,清漆實際上並沒有清除從backend.vcl中刪除的後端。即使它們不被使用,Varnish也會繼續探測它們。從長遠來看,這可能會導致意想不到的行爲。如果後端名稱被重新使用,至少後端健康狀況探測的結果可能會引起混淆。例如,在重命名上述示例中的web1後端幾次並將其主機更改爲無效後,以下是Backend_health輪詢結果,只有在定義了有效的web1後端後恢復爲上述配置。

0 Backend_health - web1 Still healthy 4--X-RH 3 1 3 0.001141 0.001055 HTTP/1.1 200 OK 
0 Backend_health - web1 Still sick ------- 0 1 3 0.000000 0.000000 
0 Backend_health - web2 Still healthy 4--X-RH 3 1 3 0.001061 0.001111 HTTP/1.1 200 OK 
0 Backend_health - web3 Still healthy 4--X-RH 3 1 3 0.001007 0.001021 HTTP/1.1 200 OK 

a patch更細粒度的後端處理清漆2.1,但據我所知,這不適用於光油3.