如何防止EC2实例发生死机?


9

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

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

我的目标网页和iOS应用后端均托管在同一实例上。


1
您的目标网页是静态的吗?
Michael-sqlbot

Answers:


8

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

负载平衡器和实例没有额外的成本,因此您可以继续使用t2类型的实例,但可以根据需要提供弹性beantalk扩展。

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


1

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

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

这可能并非完全没有问题,但是可以通过一些在线指南轻松完成,并且可以通过GUI进行全部配置。

另外,如果您的着陆页是静态的,为什么不将其托管在免费的t2.micro上,并为您的应用程序使用另一个t2.micro的免费层呢?


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

1

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


1

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

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

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

所谓作弊,是指缓存,它基于这样的想法:大多数情况下,您可以为用户提供一些过时的数据,而他们不会注意到,这可以节省大量时间。想象一下,如果您有一个页面,如果它过时了五秒钟,您就认为可以,并且速度为20 req / s。如果不使用缓存,则每分钟运行1200次该计算,而使用缓存则只有12次。您可以看到它如何产生巨大的变化。

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

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

如果需要某种程度的动态性,那么进行一些全页缓存是一个不错的选择。Nginx可以做到这一点,但是我非常喜欢Varnish,因为它具有灵活性。

无论使用什么选项,请确保进行负载测试以验证是否已正确设置;有时修复一个点会暴露出新的瓶颈。


0

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

  • 可用性
  • 具有成本效益
  • 可扩展性

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

这种体系结构使实现故障隔离更加容易。运行状况检查,缓存,隔板或断路器等技术使您能够减小发生故障的组件的爆炸半径,并提高给定应用程序的总体可用性。


没有单独定价ECS,只是底层的EC2资源,因此如何使用ECS任何比较划算?无论您是自己管理容器还是让亚马逊来做,它都应该消耗相同数量的资源。
Monica Cellio的抵制SE

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

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

0

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

  • 使用CloudFront预先加载您的网站以减少主机上的负载
  • 在S3之类的系统中使用客户端托管服务进行扩展
  • 具有自动扩展组的Elastic Load Balancer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.