Load-Balancing

如何讓 HAProxy 在使伺服器退出維護模式之前等待成功的健康檢查

  • March 5, 2016

在通過以下命令關閉 Web 伺服器進行維護之前,我正在使用 HAProxy 套接字通信將我的後端置於維護模式:

echo "disable server cluster-01/app-01-4" | sudo socat stdio /tmp/haproxy.sock

問題是,當我通過 socket enable 命令再次標記後端可用時,HAProxy 在向後端發送請求之前不會等待任何成功的健康檢查。因此,在 HAProxy 意識到伺服器仍然關閉之前,我們最終會失去一些請求,並將其重新離線。

有沒有辦法告訴 HAProxy 等到後端健康後再啟用它?或者在告訴 HaProxy 再次啟用後端之前,我是否必須讓我的啟動腳本足夠智能以監控伺服器本身?這顯然不太理想。

我目前正在這樣做:

echo "enable server cluster-01/app-01-4" | sudo socat stdio /tmp/haproxy.sock

我可以使用類似的東西嗎? echo "enable server cluster-01/app-01-4 WAIT_FOR_SUCCESSFUL_HEALTH_CHECK" | sudo socat stdio /tmp/haproxy.sock

編輯:我使用的是 HAProxy 版本 1.5x

set server proxy-name/server-name health down在將伺服器重新投入使用之前使用enable server ...似乎可以滿足您的需求。

伺服器最終會通過後續的執行狀況檢查而停止服務,但是如果伺服器在您取出它時是健康的,但當您將它重新帶回來時它就不健康,因為 HAProxy 似乎假設伺服器將啟用時處於與禁用時相同的健康狀態。

您可以遷移到 haproxy 1.6.3 並使用新的代理檢查功能。這還可以讓您在將主機從輪換中取出時將它們排出。

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