在您的NGINX服务器中拥有ELB的优势是什么?

我研究了很多亚马逊Web服务的后端设置,特别是Instagram的。 在他们的Instgram工程博客上,他们提到他们如何在他们的三个NGINX服务器前面安装一个Elastic Load Balancer,而这些服务器是运行django / Gunicorn的应用程序服务器的前端,为什么这是缓冲?

如果是这样的话,那么如何将这些NGINX服务器连接到django / gunicorn应用程序服务器呢?

看着Instagram的post,我不相信他们正在使用Nginx缓冲或caching(虽然我可能是错的)。 我使用类似的东西,但用HAProxy而不是Nginx。

我们采取这种方法的一些原因是:

  • Nginx和HAProxy在第7层操作,而ELB在第4层。如果你需要第7层服务,ELB不能提供它
  • 运行状况检查失败时,连接正常终止。 ELB可以继续将stream量传递到HAProxy / Nginx,同时stream量从服务中断实例中stream失。 请参阅https://forums.aws.amazon.com/message.jspa?messageID=231571
  • 如有必要,您可以实时扩展负载平衡层
  • HAProxy / Nginx图层背后每个实例的stream量和性能的更好衡量标准
  • ELB可以检测HAProxy实例何时发生故障,并停止向其发送stream量

我可以想到几点:

  1. 它分发请求和监视服务器的健康状况,所以如果你的一个nginx服务器崩溃,站点继续完美地工作。
  2. 亚马逊在他们这边做了一些拒绝服务的缓解。 如果你自己处理负载平衡,你将支付所有的stream量击中他们。 如果亚马逊阻止了针对你的ELB的攻击,那么你不会为这部分付费。
  3. 允许您将nginx服务器的安全组locking到ELB,使它们比公开Internet更安全。