Nav*_*vid 17 load-balancing nginx
Hii有最好的同事,
我发现Instagram上的其他开发人员通过他们的博客分享了他们的技术实现.他们为遇到的问题提供了一些很好的解决方案.其中一个解决方案是亚马逊上的一个负载平衡器,其后面有3个nginx实例.我的问题是那些nginx服务器的任务是什么?那么Elastic Load平衡器的任务是什么,它们之间的关系是什么?
有人可以解释一下这个解决方案背后的想法吗?
Tnx提前.
ddu*_*tra 47
声明:我不是这方面的专家,而是我自己学习AWS生态系统的过程.
ELB(弹性负载均衡器)除了接收请求并将其路由到正确的服务器之外,本身没有任何功能.服务器可以运行nginx,IIS,Apache,lighthttpd,你可以命名它.
我会给你一个真实的用例.
我有一个运行一个wordpress博客的nginx服务器.像我说的那样,这个服务器由nginx服务静态内容和"上游".php请求运行在同一服务器上的phpfpm提供支持.一切都很好,直到有一天.这个博客在电视节目中有特色.我有大量的用户,服务器无法跟上那么多的流量.我的第一反应是只使用AMI(亚马逊机器映像)在更强大的实例(例如m1.heavy)上启动我的服务器副本.问题是我知道在接下来的几天里我的流量会随着时间的推移而增加.不久我将不得不旋转一台更强大的机器,这将意味着更多的停机和麻烦.相反,我启动了一个ELB(弹性负载均衡器)并更新了我的DNS,将网站流量指向ELB,而不是直接指向服务器.用户不知道服务器IP或任何东西,他只看到ELB,其他一切都在亚马逊的云内.ELB决定流量服务器.您当时可以启用ELB并且只能打开一个服务器(如果此时流量较低),或者数百个.可以随时创建服务器并将其添加到服务器阵列(服务器组),也可以配置自动缩放以生成新服务器,并使用amazon命令行将它们全部自动添加到ELB服务器组.

亚马逊云观察(另一个产品和AWS生态系统的重要组成部分)始终关注服务器的运行状况,并决定它将路由该用户的服务器.它还知道所有服务器何时变得过载,并且是使命令产生另一个服务器的代理(使用您的AMI).当服务器不再处于高负载状态时,它们会被自动销毁(或停止,我不记得).
这样我就可以随时为所有用户提供服务,当负载很轻时,我会有ELB并且只有一个nginx服务器.当负载很高时,我会让它决定我需要多少台服务器(根据服务器负载).最短的停机时间.当然,您可以设置限制,同时您可以支付多少服务器以及类似的东西,这样您就无需支付任何费用.
你看,Instagram的人说下面的话 - "我们曾经在他们之间运行2台nginx机器和DNS Round-Robin".与ELB相比,这是低效的IMO.DNS Round Robin是将每个请求路由到不同服务器的DNS.所以首先进入服务器1,然后进入服务器2,然后继续进行.ELB实际上监视服务器HEALTH(cpu使用情况,网络使用情况)并根据该数据决定服务器流量.你看得到差别吗?他们说:"这种方法的缺点是DNS更新所需的时间,以防其中一台机器需要退役." DNS循环是一种负载均衡器.但是,如果一台服务器出现故障并且您需要更新DNS以从服务器组中删除此服务器,您将有停机时间(DNS需要时间来更新到整个世界).有些用户将被路由到这个糟糕的服务器.使用ELB,这是自动的 - 如果服务器运行状况不佳,则不会再接收任何流量 - 除非整个服务器组的运行状况不佳,并且您没有任何类型的自动扩展设置.
现在这些人在Instagram:"最近,我们开始使用亚马逊的弹性负载均衡器,其背后有3个NGINX实例,可以交换进出(如果他们的健康状况检查失败,会自动退出)."
我说明的场景是虚构的.它实际上比这更复杂,但没有什么是无法解决的.例如,如果用户将图片上传到您的应用程序,您如何保持服务器组中所有计算机之间的一致性?您需要将图像存储在Amazon s3等外部服务上.另一篇关于Instagram工程的帖子 - "这些照片本身就直接进入了亚马逊S3,它目前为我们存储了数TB的照片数据." 如果他们在负载均衡器上有3个nginx服务器,并且所有服务器都提供图像链接指向S3的html页面,那么您将没有问题.如果图像本地存储在实例上 - 无法做到这一点.ELB上的所有服务器也需要一个外部数据库.因为亚马逊有RDS - 所有机器都可以指向同一个数据库,并且可以保证数据的一致性.在上图中,您可以看到RDS"Read replica" - 这是RDS的负载均衡方式.我此时不太了解,抱歉.
试试看:http://awsadvent.tumblr.com/post/38043683444/using-elb-and-auto-scaling
最好的祝福.
| 归档时间: |
|
| 查看次数: |
11669 次 |
| 最近记录: |