我在应用商店上有一个iOS应用,最近我在EC2上托管的登录页面收到了大量流量,导致页面无响应,幸运的是,我设法通过重新启动实例并将其升级到t2.medium。

现在,我希望雇用某个人来实施一项技术,以防止再次发生同样的死亡。我的经验仅能使我了解基本的devops知识,但对于AWS上的负载均衡器还不够,我想知道什么是我的实例可以承受的实现。

我的登录页面和iOS应用程序后端托管在同一实例上。

评论

您的目标网页是静态的吗?

#1 楼

如果您想在没有更多知识的情况下快速进行排序,我建议您使用弹性beantalk。这是另一个AWS应用程序,它将为您处理负载平衡器配置和实例扩展。

负载平衡器和实例之上没有额外的成本,因此您可以继续使用t2类型的实例,但可以使用弹性beantalk扩展

自动缩放不是即时的,在流量激增的情况下,通常需要很短的时间(通常为数分钟)才能处理峰值,但是这会比手动缩放实例大小要好得多,而且真的很容易掌握。

#2 楼

我建议如上所述的自动扩展,并添加一些CloudWatch警报,以在特定阈值开始增加时开始自动扩展过程,而不是在阈值已经不远时启动自动扩展过程。

当CPU处于50%或更高的状态持续30秒或更长时间时,将CloudWatch配置为监视服务器。

这可能并不是完全正确的,但是通过一些在线指南很容易做到,并且可以通过GUI进行全部配置。

此外,如果您的目标网页是静态的,为什么不托管该页面在免费的t2.micro上并为您的应用程序使用另一个t2.micro的免费层?

评论


在流量突然增加期间,自动缩放不是整体的解决方案。自动缩放检测窗口介于1-5分钟之间,具体取决于您的配置,这也可能需要一些时间。通常,正确的答案是使实例热运行,即:将实例运行在所感知的流量水平之上,并允许自动缩放以维持该余量。

– Matt O.
17-10-16在14:47

#3 楼

如果您正在寻找帮助,我很乐意为您提供帮助。根据您的页面,您可能根本不需要ec2。例如,如果您提供静态或JavaScript服务,则可以从s3借助cloudfront发行版提供服务。或者,如果绝对必要,我们可以使用自动缩放组。

#4 楼

解决流量激增的一般策略有两种:增加容量和降低成本。

增加容量意味着自动扩展,当公有云首次出现时,每个人都为之兴奋。从最基本的意义上讲,这将根据负载为您启动更多的Web服务器,并将它们添加到负载平衡器,但是由于管理起来很麻烦,因此还有更多自动解决方案,例如Elastic Beanstalk。

自动扩容的麻烦在于,它还会自动扩展账单-10倍的正常流量意味着10倍的服务器意味着您必须支付的10倍的钱。这就是为什么要记住这是一个有用的策略的原因,我认为您应该始终从查看可以作弊的数量开始。

我说的是作弊,是指缓存,它基于大多数您可以为用户提供稍微过时的数据的时间,而他们不会注意到,这可以为您节省大量时间。想象一下,如果您有一个页面,如果该页面过时五秒钟,您认为可以,则该页面的速度为20 req / s。如果不使用缓存,则每分钟运行1200次该计算,而使用缓存则只有12次。您可以看到这有何不同。

当然有很多类型的缓存,并且一个成功的网站将使用其中的几个。但是对于您的用例,有两个非常好的和简单的选择。

第一个是使站点完全静态。假设您可以这样做,但是如果可以的话,您只需让Nginx直接提供html,它就可以无休止地处理大量请求。

如果您需要一定程度的动态性,那么进行一些全页缓存是一个不错的选择。 Nginx可以执行此操作,但是我真的很喜欢Varnish,因为它具有灵活性。无论您使用什么选项,请确保进行负载测试以验证是否已正确设置;有时修复一个点会暴露出新的瓶颈。

#5 楼

我想分享我们在AWS方面的经验。我们在EC2上部署了应用程序,但遇到了同样的问题,而且成本也很高。
尽管我们的应用程序是整体的,但仍在部署应用程序Amazon EC2 Container Service,但是我们实现了



经济高效
可伸缩性

应用程序负载平衡器将处理流量并将流量路由到运行状况良好的实例,您可以运行相同服务的多个任务,而不必担心扩展和平衡负载。


此体系结构使故障隔离更容易实现。
运行状况检查,缓存,隔板或断路器等技术
使您能够减少损坏组件的爆炸半径,并改善给定应用程序的整体可用性。


评论


ECS没有单独定价,只是基础EC2资源,因此使用ECS更具成本效益吗?无论您是自己管理容器还是让亚马逊来做,它都应消耗相同数量的资源。

–熊佳亚诺夫
17-10-16在23:10

在容器中,如果您使用的是5mb和ec2的alpine,则使用的是2gb的ubuntu?哪个最好?在T2 Micro中,您可以在流量的基础上运行5个php容器,并具有放大和缩小的功能。.您可以在ec2中运行,具有放大和缩小的功能吗?

– Adiii
17-10-18在3:40

您无需在ec2实例上使用Ubuntu。您可以上传Alpine图片,并在需要时使用它。如果您已经使用ECS进行了所有工作,那就太好了,并且不太可能要回去,但是我的观点是,仅迁移到ECS并不能使应用程序具有更高的可扩展性或成本效益。这是您同时对应用程序,基础结构和体系结构进行的其他更改。

–熊佳亚诺夫
17-10-18在21:47

#6 楼

这在很大程度上取决于特定的体系结构,但是例如:


用CloudFront前端加载网站以减少主机上的负载
在S3之类的系统中使用客户端托管服务用于秤
带有自动缩放组的弹性负载均衡器