我們有一組6個後端爲我們的網站提供服務。因爲我們使用多個數據中心,所以當我們將清單發送到localhost httpd服務器(運行在端口81上)時,我們發現最佳性能發生在我們身上。這當然是一個非常基本的配置深受清漆的支持,並可以使用回退導演來完成:如何使用varnish將請求發送到localhost httpd服務器,但是如果不健康將請求循環發送到一組其他節點
director default fallback {
{ .backend = localbackend; }
{ .backend = web1; }
{ .backend = web2; }
{ .backend = web3; }
etc...
}
然而後備導演試圖在其他後端爲了直到它找到一個健康的人。 BIG問題是,在上面的配置中,如果localbackend失敗,web1將採取所有流量!這會超載web1,它會生病。然後,所有請求都會轉到web3 ...現在它將獲得正常流量的3倍...導致級聯失敗。
因此,我們需要一個配置,它允許所有請求發送到本地主機httpd服務器,如果它是健康的,但如果不是,則以循環方式將請求發送到其他健康的服務器。
非常感謝您提供任何您可能會想到的建議和解決方案......您的幫助非常感謝。
一種方式我能想到的解決這個問題的,是巨大的權重設置爲你的第一個後端和循環主任。 當第一臺服務器出現故障時,會隨機選擇其他服務器來提供流量。 但是,您仍然有1%的機會從另一個緩存中獲取服務器內容。 我不確定在vcl_fetch中是否可以更改後端導向器,但是當第一個後端不健康時,您可以測試此方法以更改後端。 或者您可以嘗試「重新啓動」方法https://www.varnish-cache.org/trac/wiki/VCLExampleRestarts – 2012-04-16 23:14:48
vcl標籤是德爾福用戶,請標記問題爲varnish-vcl – 2013-01-21 15:37:33