Nginx
如果 HAProxy 後端 nginx 伺服器無法連接到 Unicorn,則將其取消輪換
我有一個執行 HAProxy 的負載均衡器,兩個後端伺服器都在 Unicorn 上執行 Nginx。
如果 nginx 在其中一個框上出現故障,HAProxy 會將其從集合中取出,並且服務繼續執行。
如果 unicorn 出現故障,nginx 開始提供 502 錯誤,HAProxy 會愉快地將它們轉發給客戶端。
在我看來,有兩種可能的解決方案:
- 配置 nginx 連接不上獨角獸根本不響應。HAProxy 會認為它已關閉,不再在那裡發送請求。
- 配置 haproxy 以將 502 視為伺服器關閉,不再向那裡發送任何請求。
我都不知道該怎麼做
在 Unicorn 中,如果應用程序啟動並執行良好,您將有一個“ping”頁面響應“OK”。然後使用 http-check-expect 將該頁面用作 haproxy 中的健康檢查。
感謝@florin-asavoaie 為我指出了這一點的寫作方向。這是一個完整的寫:
我已經在 /status 有一個返回 {“status”:“up”} 的 json 頁面
所以我加了
option httpchk GET /status http-check expect string up
到我在 haproxy.cfg 中的後端並重新啟動 haproxy