如何缩小AWS EC2和RDS实例

一段时间以来,我一直在使用AWS进行简单的Web应用程序。 我注意到应用程序的使用成本太高了:

  • EC2 t2.micro :$ 28 /月
  • LoadBalancer-hour (or partial hour) :$ 37
  • RDS db.m1.small instance hour (or partial hour) running MySQL :$ 50

$ 100 + /月全部用于每天有5-10个用户的站点。

我怎样才能减less我现有的EC2和RDS实例,消除或减less负载平衡的需求,而不用重新设置所有这些工作?


基本上,我需要完成这些事情:

  • 通过HTTPS服务我的前端静态应用程序(目前在S3中)(目前使用Cloudfront来实现)
  • 通过HTTPS服务我的后端API(目前在ElasticBeanstalk中)(我被告知我需要负载平衡)
  • 托pipe一个数据库(目前使用AWS RDS和ElasticBeanstalk)
  • 目前用户不多,所以我需要比RDS和EC2每月$ 80 +更便宜的API托pipe。 需要这些服务是更多的$ 30总/月。 我没有看到负载平衡的需要,但正如我所说,我想我需要这个用于https?

你不需要ELB或RDS。 请注意,ELB提供了一些安全性,可以防止一些第4层和第7层的攻击。 您可以select使用CloudFlare(免费)或CloudFront(廉价)来取代ELB,或者您可以不使用。 这是很便宜的安全,它从您的服务器卸载工作。

我在t2.nano上运行Nginx,PHP 5.6和MySQL。 在过去的24小时内,我已经有1500个用户和15000个请求到15个左右的网站。 一些静态资源由CDNcaching,但是所有页面都访问了服务器。 根据CloudWatch,服务器使用CPU的2%左右,平均几乎不到5分钟的时间。

我有一个关于如何设置这一切的教程 。

我做的关键事情是:

  • 为匿名用户使用Nginx页面caching
  • closuresMySQL性能模式(这是在我的迁移文章的最后 )
  • 添加512MB的交换空间 (它并没有使用太多)。
  • 让我们使用acmetoolencryptionhttps

移民

迁移MySQL的最好方法是使用mysqldump。 在您的服务器上设置MySQL并将其configuration为低RAM,添加页面文件,将数据库从RDS转储到服务器上的文件中,然后将数据库上传到服务器。 您可能需要再次设置用户和权限。 对RDS数据库做最后的手动快照,然后closuresRDS。 几个月后,如果一切正常,请返回并删除您的RDS快照。

要更改EC2实例的大小,请停止它,右键单击并更改实例大小,然后再次启动它。 这需要一两分钟。 如果你愿意,你可以通过API来完成。

问题的答案

HTTPS :“似乎为了使用AWS的https,我需要负载均衡器为我的EC2实例”

有很多方法可以将https添加到EC2服务器。

  1. 使用带有Amazon证书的ELB很容易。
  2. 从证书颁发机构请求证书(有很多),并configuration您的Web服务器使用它。 我有一个免费教程,让我们在这里encryption证书和nginx。
  3. 使用CloudFlare ,它可以通过https代理你的http服务器。 您也可以使用CloudFront将https代理回http 。 我毫不怀疑还有很多其他的方法

请注意,如果您的域configuration为将stream量路由到ELB,则需要稍微改变一下。 最简单的方法可能是为您的EC2实例获取弹性IP地址,并将该弹性IP作为Alogging放入DNSconfiguration中。

实例大小 :由于我们没有足够的信息,因此我无法给出具体的答案。 从t2.micro转换到t2.nano应该很容易,因为它们是相同的技术,只是更小。

如果你从另一个实例types转移,我会说检查你的AMI,也许这是一个旧的PV AMI,而不是一个新的HVM AMI。 如果你编辑你的问题,以提供更多的信息,我可以有另一个想法。

几个选项要考虑 –

  1. 将您的EC2实例降级到t2.nano
  2. 由于您的应用程序没有stream量/负载,您可以简单地停止使用ELB
  3. 我认为您的RDS db.m1.small实例是在启用了multi-az选项选项的情况下设置的,您可以修改相同的选项并禁用multi-az选项选项,因为它可以将您的RDS实例成本降低到当前成本的一半。

如果您仍想降低成本,那么可以考虑EC2 现货实例或EC2和RDS的预留实例 (如果适合您的需要)。

您可以select将您的EC2实例的大小减小到t2.nano,因为您并不期待这么多的stream量。

您也可以停止使用您的负载均衡器。 在这方面,我不认为它在调节传入stream量方面起到任何作用。

您也可以将您的RDS减less到db.t2.micro 。 我在这个尺寸的RDS上花了大约20美元。 也不要使用多可用区。

虽然需要更多的工作,但您也可以select运行t2.micro EC2并自行设置MySQL,并完全停止使用RDS。