Nginx
沒有負載平衡的 nginx 故障轉移
我在配置 nginx 時遇到問題。
我使用 nignx 作為反向代理。我想將所有請求發送到我的第一台伺服器。如果第一台伺服器關閉,我想向第二台伺服器發送請求。
簡而言之,如何在沒有負載平衡的情況下擁有故障轉移解決方案?
您想要的是主動+被動設置。這是一個範例 nginx conf 片段,可以幫助您進行操作:
upstream backend { server 1.2.3.4:80 fail_timeout=5s max_fails=3; server 4.5.6.7:80 backup; } server { listen 80; server_name whatevs.com; location / { proxy_pass http://backend; } }
因此,“通常”,所有請求都將轉到主機 1.2.3.4。如果我們在那個盒子上遇到三個失敗,那麼 4.5.6.7 將接管。
擴展 chrskly 的答案,您可能需要配置 3 個標誌/配置。
- fail_timeout:失敗嘗試的總時間,並將伺服器在同一時間標記為 DOWN。如果 5 秒,則將在 5 秒內嘗試max_fail嘗試,如果仍然失敗,則將該伺服器標記為 DOWN 5 秒。
- max_fail : 最大嘗試次數
- proxy_connect_timeout:等待連接的時間。
在下面的 GRPC 範例中,如果主伺服器在 7 秒內無法連接,則切換到備份並將主伺服器標記為關閉 6000 秒:
upstream grpcservers { server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1; # After 1 fail in 6000s, Main server is marked unavailable for 6000s. server 192.168.0.XX:9999 backup; } location / { grpc_pass grpc://grpcservers; grpc_connect_timeout 7s; # If conn cant be made in 7sec, switch to backup }