gpt4 book ai didi

nginx - 负载均衡器背后的nginx

转载 作者:行者123 更新时间:2023-12-03 13:42:02 25 4
gpt4 key购买 nike

我发现,Instagram通过其博客与其他开发人员共享其技术实现。他们为遇到的问题提供了很好的解决方案。他们提供的解决方案之一是Amazon上的Elastic Load Balancer,其后有3个nginx实例。这些nginx服务器的任务是什么?弹性负载均衡器的任务是什么,它们之间的关系是什么?

最佳答案

免责声明:无论如何我都不是专家,我自己也在学习AWS生态系统。

ELB(弹性负载平衡器)本身没有任何功能,只是接收请求并将其路由到正确的服务器。服务器可以运行nginx,IIS,Apache,lighthttpd(您将其命名)。

我会给你一个真实的用例。

我有一台运行一个wordpress博客的nginx服务器。就像我说的那样,该服务器由nginx提供服务,该服务器提供静态内容,并将.php请求“上游”传输到在同一服务器上运行的phpfpm。一切顺利,直到一天。该博客在电视节目中精选。我有大量的用户,服务器无法跟上这么大的流量。
我的第一个反应是仅使用AMI(亚马逊机器映像)在更强大的实例(例如m1.heavy)上旋转服务器的副本。问题是我知道接下来几天我的流量会随着时间增加。很快,我将不得不旋转一台功能更强大的机器,这将意味着更多的停机时间和麻烦。
相反,我启动了ELB(弹性负载平衡器)并更新了DNS,以将网站流量指向ELB,而不是直接指向服务器。用户不知道服务器IP或其他任何内容,他只看到ELB,其他所有内容都在亚马逊的云中进行。
ELB决定流量流向哪个服务器。您可以同时拥有ELB和一台服务器(如果当前流量很低),也可以有数百台。可以随时创建服务器并将其添加到服务器阵列(服务器组),也可以配置自动缩放以生成新服务器,并使用amazon命令行将它们自动添加到ELB Server组中。



亚马逊云监视(AWS生态系统的另一个产品和重要组成部分)始终在监视服务器的运行状况,并决定将用户路由到哪台服务器。它还知道何时所有服务器都变得太负载,并且是发出命令以生成另一台服务器(使用AMI)的代理。当服务器不再承受重负荷时,它们将自动销毁(或停下来,我不记得了)。

这样,我可以随时为所有用户提供服务,而在负载轻的情况下,我将拥有ELB和一台nginx服务器。当负载很高时,我会让它决定我需要多少服务器(根据服务器负载)。停机时间最少。当然,您可以设置限制,以限制同时可以负担多少台服务器以及类似的费用,这样您就不必为可支付的费用付费。

你看,Instagram的人说以下话:“我们曾经在两台nginx机器之间运行DNS Round-Robin”。与ELB相比,这是效率低下的IMO。 DNS Round Robin是dns将每个请求路由到不同的服务器。因此,首先进入服务器一,其次进入服务器二,然后再继续。
ELB实际上观察服务器的健康状况(cpu使用情况,网络使用情况),并根据此结果决定将哪个服务器流量发送给该服务器。你看得到差别吗?
他们说:“这种方法的缺点是,如果其中一台计算机需要停用,则DNS需要花费一些时间。”
DNS轮询是负载均衡器的一种形式。但是,如果一台服务器运行kaput,并且您需要更新DNS以将其从服务器组中删除,则您将有停机时间(DNS需要时间才能更新到整个世界)。一些用户将被路由到该故障服务器。借助ELB,这是自动的-如果服务器运行状况不佳,它不会再收到任何流量-除非整个服务器组的运行状况都不佳,并且您没有任何类型的自动扩展设置。

现在在instagram上的家伙们说:“最近,我们转而使用Amazon的Elastic Load Balancer,其后有3个NGINX实例可以交换和切入(如果运行状况检查失败,则将自动退出循环)。”

我说明的场景是虚构的。它实际上比这更复杂,但是没有什么无法解决。例如,如果用户将图片上传到您的应用程序,您如何才能保持服务器组中所有计算机之间的一致性?您需要将图像存储在外部服务(如Amazon s3)上。在Instagram工程上的另一篇文章中:“照片本身直接到达Amazon S3,该商店目前为我们存储了数TB的照片数据。”如果它们在负载均衡器上有3个nginx服务器,并且所有服务器都提供html页面,图像链接指向这些页面,则指向S3,那么您将没有问题。如果映像存储在本地实例上–则无法执行。
ELB上的所有服务器也将需要一个外部数据库。为此,亚马逊拥有RDS –所有机器都可以指向相同的数据库,并且可以保证数据的一致性。
在上图中,您可以看到RDS“只读副本”-这是RDS负载平衡的方式。抱歉,我目前对此并不了解。

尝试阅读以下内容:http://awsadvent.tumblr.com/post/38043683444/using-elb-and-auto-scaling

最好的祝福。

关于nginx - 负载均衡器背后的nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com