Haproxy

使用備份伺服器的 haproxy http 檢查在主伺服器關閉時顯示 503

  • February 3, 2019

我一直在嘗試使用 haproxy 設置轉發。

listen POC-2019-02-03
   bind 0.0.0.0:8083
   timeout connect  14000
   timeout client   180000
   timeout server   180000
   mode http
   option forwardfor
   http-request set-header X-Forwarded-Port %[dst_port]
   http-request add-header X-Forwarded-Proto https if { ssl_fc }
   option httpclose
   option httpchk GET / HTTP/1.1
   http-check expect rstring "Welcome"
   server S-ONE 127.0.0.1:6001 check
   server S-TWO 127.0.0.1:6002 check backup

當請求http://127.0.0.1:8083時,通常會如下服務:

  • 顯示S-ONE的內容
  • 但是當像正常生產場景一樣請求多個請求時,只要我拒絕 S-ONE,它就會顯示

503服務不可用

沒有可用於處理此請求的伺服器。

然後通過S-TWO提供第二個請求

  • 然後它連續由S-TWO服務。之後我確實啟動了S-ONE並且顯然請求仍然來自S-TWO,這對我來說沒問題。
  • 我拒絕了S-TWO然後沒有顯示任何錯誤,它由S-ONE服務,這很酷。但在這種情況下,我沒有得到相反的結果。

我有什麼需要在這裡調整的嗎?

你應該看看fallinter

跌倒 <計數>

“fall” 參數表示伺服器在連續不成功的健康檢查後將被視為死亡。如果未指定,此值預設為 3。另見“check”、“inter”和“rise”參數。

間 <延遲>

“inter”參數將兩次連續健康檢查之間的間隔設置為毫秒。如果未指定,則延遲預設為 2000 毫秒。

我從未嘗試過這種確切的場景,但我懷疑在它實際將主機標記為關閉(從而啟動備份)之前,它沒有其他地方可以將流量路由到,所以繼續將它發送到 {{s-ONE }} 直到它正式“關閉”。

引用自:https://serverfault.com/questions/952084