如果您正在深入研究 Web 基礎架構的世界,您可能聽說過負載平衡。它就像網路的交通警察,確保所有這些資料請求到達正確的位置而不會造成堵塞。在本文中,我們將詳細介紹一些流行的負載平衡技術,並向您展示如何使用 NGINX 進行設定。在評論中分享您最喜歡的負載平衡策略,並告訴我們它如何幫助解決您的問題。
何時使用它:當您的伺服器都非常相似時,非常適合均勻分佈請求。
這是什麼意思:把它想像成輪流。每個伺服器都按順序收到一個請求,一個接一個。當所有伺服器都具有同等功能時,它很簡單且效果很好。
缺點:沒有考慮伺服器負載或容量差異,如果伺服器功率不同,可能會導致效能不均。
如何在 NGINX 中設定:
upstream backend {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
何時使用它:非常適合當某些伺服器比其他伺服器繁忙時。
這是關於什麼的:這個將流量發送到活動連接最少的伺服器。這就像在雜貨店選擇最短的隊伍一樣。
缺點:如果某些伺服器速度較慢或容量較小,可能會導致分佈不均勻,因為它們最終可能仍會產生更多連線。
如何在 NGINX 中設定:
upstream backend {
least_conn;
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
何時使用它:當您的伺服器具有不同的優勢時非常方便。
它的意義:與循環法類似,但您可以根據某些伺服器的容量為其提供更多「輪次」。
缺點:需要手動配置和調整權重,這可能很複雜,並且需要隨著伺服器負載的變化定期調整。
如何在 NGINX 中設定:
upstream backend {
server server1.example.com weight=3;
server server2.example.com weight=1;
server server3.example.com weight=2;
}
何時使用它:最適合具有不同伺服器負載和功能的混合環境。
它是什麼:結合了兩個世界的優點——最少連接和加權循環。
缺點:與加權循環法一樣,它需要仔細配置和監控以確保權重設定正確。
如何在 NGINX 中設定:
upstream backend {
least_conn;
server server1.example.com weight=3;
server server2.example.com weight=1;
server server3.example.com weight=2;
}
何時使用它:非常適合讓用戶連接到同一台伺服器。
它的意義:使用客戶端的 IP 位址來決定使用哪個伺服器,確保一致性。
缺點:如果大量使用者共用相同 IP 範圍,則可能導致分佈不均,且無法妥善處理伺服器故障。
如何在 NGINX 中設定:
upstream backend {
ip_hash;
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
何時使用它:當速度就是一切時的理想選擇。
它的意義:將請求傳送到回應最快的伺服器。 NGINX 不支援開箱即用,但您可以使用一些第三方魔法,例如Nginx Upstream Fair Module ..
缺點:需要額外的監控和第三方模組,這會增加複雜性和潛在的故障點。
何時使用它:適合測試或當您只是想混合使用時。
它是什麼:為每個請求隨機選擇一個伺服器。同樣,您需要一個第三方模組,例如Nginx Random Load Balancer Module 。
缺點:可能導致負載分佈不均勻,不適合效能至關重要的生產環境。
何時使用它:當頻寬使用率很高時很有用。
它的意義:使用最少的頻寬將流量定向到伺服器。對於這一點,您需要一些自訂設置,例如自訂腳本或監視工具。
缺點:需要自訂監控和設置,這可能很複雜且佔用資源。
基於地理位置:根據使用者所在位置引導流量。非常適合減少延遲。
一致性雜湊:即使伺服器池發生變化,也可以將請求保持到同一伺服器。非常適合快取系統。
自訂負載平衡:使用 NGINX 中的自訂腳本或 Lua 腳本根據您的需求進行自訂。
選擇正確的負載平衡策略就是要了解應用程式的需求。 NGINX 非常靈活,可以輕鬆處理其中的許多策略。無論您使用內建方法還是第三方模組,都有適合您的解決方案。只需注意潛在的缺點並做出相應的計劃即可。請在評論中分享您最喜歡的負載平衡策略。快樂平衡!
原文出處:https://dev.to/juniourrau/8-type-of-load-balancing-104j