2015-12-25 64 views
2

在HTTP模式下,如果設置了「option redispatch」選項,HAProxy會自動重試另一個後端,如果當前的一個是關閉的。從客戶端看到整個過程是透明的,期望響應時間會比正常情況更長。爲什麼HAProxy在tcp模式下不支持「option redispatch」?

我想知道爲什麼在TCP模式下支持這個選項?理論上它應該可能的。

+0

我能夠在TCP模式偵聽器上啓用它。你試過了嗎?你確定重試設置大於零? – mwp

回答

0

問題是HTTP會話的工作方式。會話令牌存儲在HTTP cookie中。來自Wikipedia

會話令牌是從服務器生成併發送到客戶端以識別當前交互會話的唯一標識符。客戶端通常以HTTP cookie的形式存儲和發送令牌並/或將其作爲GET或POST查詢中的參數發送。

因此,HAProxy無法讀取/操作TCP模式下的會話信息,因爲它必須首先打開HTTP連接才能讀取cookie數據。如果HAProxy無法讀取會話信息,那麼它將無法知道客戶端是否嘗試連接到死的服務器,結果是,它是否應嘗試重新分配它。

這是備份在HAProxy configuration manualoption redispatch

+0

謝謝,@JamesStewy。但我認爲如果用戶指定TCP模式,HAPROXY不會考慮HTTP cookies,對吧? – cfz

+0

這是正確的。因此,HAProxy無法讀取會使'option redispatch'冗餘的HTTP會話信息。 – JamesStewy

相關問題