在 NGINX 伺服器前面放置 ELB 有什麼優勢?

在 NGINX 伺服器前面放置 ELB 有什麼優勢?

我研究了 Amazon Web Services 上的許多後端設置,尤其是 Instagram 的後端設置。在他們的Instgram 工程博客他們提到他們如何在三個 NGINX 伺服器前面有一個彈性負載平衡器,這些伺服器位於運行 django/Gunicorn 的應用程式伺服器前面,為什麼會這樣(是為了緩衝?快取?)

如果是這種情況,如何將這些 NGINX 伺服器連接到 django/gunicorn 應用程式伺服器?

答案1

看了一眼 Instagram 帖子,我不相信他們使用 Nginx 進行緩衝或緩存(儘管我可能是錯的)。我使用類似的東西,但使用 HAProxy 而不是 Nginx。

我們採取這種方法的一些原因:

  • Nginx 和 HAProxy 運作在第 7 層,而 ELB 運作在第 4 層。
  • 當健康檢查失敗時,優雅地終止連線。當流量從停止服務的執行個體流出時,ELB 可以繼續將流量傳遞到 HAProxy/Nginx。看https://forums.aws.amazon.com/message.jspa?messageID=231571
  • 如有必要,您可以即時擴展負載平衡層
  • 關於 HAProxy/Nginx 層後面每個實例的流量和效能的更好指標
  • ELB 可以偵測 HAProxy 執行個體何時發生故障並停止傳送流量

答案2

我能想到的有幾點:

  1. 它分發請求並監控伺服器的運作狀況,因此,如果您的 nginx 伺服器崩潰,該網站將繼續完美運作。
  2. 亞馬遜在其端做了一些拒絕服務緩解措施。如果您自己處理負載平衡,您將為所有訪問它們的流量付費。如果亞馬遜阻止了一些針對您的 ELB 的攻擊,您無需為該部分付費。
  3. 允許您將 nginx 伺服器的安全群組鎖定到 ELB,使它們比向公共 Internet 開放更安全。

相關內容