我無法清楚地理解Haproxy如何在http模式下執行健康檢查。haproxy http負載平衡和狀態處理
如果第一個返回錯誤狀態代碼(例如503),我需要重新發送http請求到另一個服務器(後端服務器列表中的下一個)。 我需要Haproxy的以下行爲: 1)我收到一些HTTP請求 2)我把它發送到第一臺服務器 3)如果我得到503(或其他錯誤代碼),這個HTTP請求必須發送到下一個服務器 4)如果它返回200代碼,此tcp會話的下一個http請求去第一臺服務器
我知道它很容易在nginx中實現(使用proxy_next_upstream,我想)。但我需要使用Haproxy,因爲我需要連接的軟件在第4層上工作,而且我無法更改它,因此需要將http消息組保留在同一個tcp會話中。我可以讓他們在haproxy的同一會話中,但不能在nginx中。
我知道httpchk和觀察,但他們不是我所需要的。 第一個允許我發送一些http請求,而不是我收到的http請求(我需要分析http流量來決定我將回答的http狀態)。 第二個標記我的服務器已死,不再發送消息,但我需要通過分析此消息。 我確實需要像nginx這樣的行爲,但能夠在tcp會話中擁有http消息。 可能有一些不錯的方法來實現它ACL?
任何人都可以請給我一個詳細的解釋haproxy如何在http模式下處理負載均衡或爲我的問題提供一些解決方案?
UPDATE: 例如,當我試圖做它與觀察,我使用的配置:
global
log 127.0.0.1 local0
maxconn 10000
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
maxconn 10000
contimeout 10000
clitimeout 50000
srvtimeout 50000
listen zti 127.0.0.1:1111
mode http
balance roundrobin
server zti_1 127.0.0.1:4444 check observe layer7 error-limit 1 on-error mark-down
server zti_2 127.0.0.1:5555 check observe layer7 error-limit 1 on-error mark-down
感謝, 梅德
請發表您的配置, –
@Tan康達其實,我還是沒寫的不錯的配置,因爲我不知道如何實現它。但是,我在我的帖子後面添加了配置,當嘗試按照「觀察」的方式做我想要的配置時 – RedRus