在 NGINX 服务器前面安装 ELB 有什么好处?

在 NGINX 服务器前面安装 ELB 有什么好处?

我研究过亚马逊网络服务上的很多后端设置,尤其是 Instagram 的后端设置。在他们的Instgram 工程博客他们提到他们在三个 NGINX 服务器前面有一个弹性负载均衡器,而这三个 NGINX 服务器又位于运行 django/Gunicorn 的应用服务器前面,这是为什么呢(是为了缓冲吗?缓存?)

如果是这样,如何将这些 NGINX 服务器连接到 django/gunicorn 应用服务器?

答案1

看了 Instagram 的帖子,我不认为他们使用 Nginx 进行缓冲或缓存(尽管我可能错了)。我使用类似的方法,但使用的是 HAProxy 而不是 Nginx。

我们采用这种方法的原因如下:

  • Nginx 和 HAProxy 在第 7 层运行,而 ELB 在第 4 层。如果您需要第 7 层服务,ELB 无法提供
  • 当健康检查失败时,优雅地终止连接。ELB 可以继续将流量传递给 HAProxy/Nginx,同时流量会从停止服务的实例中流出。请参阅https://forums.aws.amazon.com/message.jspa?messageID=231571
  • 如有必要,您可以实时扩展负载平衡层
  • 有关 HAProxy/Nginx 层后面每个实例的流量和性能的更好指标
  • ELB 可以检测 HAProxy 实例何时发生故障并停止向其发送流量

答案2

我能想到的几点:

  1. 它分配请求并监控服务器的运行状况,因此如果您的一个 nginx 服务器崩溃,网站仍能继续正常运行。
  2. 亚马逊在其端采取了一些拒绝服务缓解措施。如果您自己处理负载平衡,您将为所有访问它们的流量付费。如果亚马逊阻止了一些针对您的 ELB 的攻击,您就无需为这部分付费。
  3. 允许您将 nginx 服务器的安全组锁定到 ELB,这使得它们比向公共互联网开放更安全。

相关内容