我已经使用 AWS 开发了一个简单的 Web 应用程序一段时间。我注意到,对于该应用程序的使用来说,成本太高了:
EC2 t2.micro
:28 美元/月LoadBalancer-hour (or partial hour)
:37美元RDS db.m1.small instance hour (or partial hour) running MySQL
:50美元
对于每天有 5-10 个用户的网站来说,每月的费用为 100 美元以上。
如何缩小现有的 EC2 和 RDS 实例并消除或减少负载平衡需求,而无需重新进行所有设置工作?
基本上,我需要完成这些事情:
- 通过 HTTPS 提供我的前端静态应用程序(目前在 S3 中)(目前使用 Cloudfront 来执行此操作)
- 通过 HTTPS 提供我的后端 API(目前在 ElasticBeanstalk 中)(我被告知我需要为此进行负载平衡)
- 托管数据库(当前使用带有 ElasticBeanstalk 的 AWS RDS)
- 目前用户不多,所以我需要比每月 80 美元以上的 RDS 和 EC2 API 托管更便宜的托管服务。这些服务每月总共需要 30 美元左右。我完全不认为需要负载平衡,但就像我提到的,我认为我需要它用于 https?
答案1
您不需要 ELB 或 RDS。请注意,ELB 提供了一定的安全性,可以防止某些第 4 层和第 7 层攻击。您可以选择使用 CloudFlare(免费)或 CloudFront(便宜)来替换 ELB,或者您可以不用它。它是一种廉价的安全性,并且可以减轻您服务器的工作负担。
我在 t2.nano 上运行 Nginx、PHP 5.6 和 MySQL。在过去 24 小时内,我有 1500 名用户和 15,000 个请求,这些请求来自大约 15 个网站。一些静态资源被 CDN 缓存,但所有页面都访问了服务器。根据 CloudWatch 的数据,该服务器的 CPU 使用率约为 2%,在 5 分钟内,平均值很少超过这个数字。
我有教程关于我如何设置这一切。
我做的主要事情是:
- 对匿名用户使用 Nginx 页面缓存
- 关闭 MySQL 性能模式(在我的移民文章)
- 添加 512MB交换空间(它用的并不多)。
- 使用 Let's Encrypt 进行 https 加密acmetool
移民
迁移 MySQL 的最佳方法是使用 mysqldump。在您的服务器上设置 MySQL 并将其配置为低 RAM,添加页面文件,将数据库从 RDS 转储到服务器上的文件中,然后将数据库上传到您的服务器。您可能需要再次设置用户和权限。对您的 RDS 数据库进行最后的手动快照,然后关闭 RDS。如果一切正常,几个月后返回并删除您的 RDS 快照。
要更改 EC2 实例的大小,请停止它,右键单击并更改实例大小,然后重新启动它。这需要一两分钟。如果您愿意,可以通过 API 进行操作。
问题答案
HTTPS:“看起来,为了在 AWS 上使用 https,我需要为我的 EC2 实例安装负载均衡器”
有很多方法可以为 EC2 服务器添加 https。
- 使用带有 Amazon 证书的 ELB 很容易。
- 从证书颁发机构(有很多)申请证书并配置您的 Web 服务器以使用它。我有一个教程,介绍如何使用免费的 let's encrypt 证书和 nginx 执行此操作这里。
- 使用云Flare,它可以通过 https 代理您的 http 服务器。您还可以使用 CloudFront 来代理 https 返回 http我相信还有很多其他方法
请注意,如果您已将域配置为将流量路由到 ELB,则需要进行一些更改。最简单的方法可能是为您的 EC2 实例获取弹性 IP 地址,并将该弹性 IP 作为 A 记录放入您的 DNS 配置中。
实例大小:由于我们没有足够的信息,我无法在这里给您一个具体的答案。从 t2.micro 更改为 t2.nano 应该很容易,因为它们采用的是相同的技术,只是尺寸更小。
如果您是从其他实例类型迁移过来的,我建议您检查一下您的 AMI,也许它是一个旧的 PV AMI,而不是较新的 HVM AMI。如果您编辑问题以提供更多信息,我可以再考虑一下。
答案2
答案3
您可以选择将 EC2 实例的大小减少到t2.纳米因为您没有想到会有这么多的流量。
您也可以停止使用负载均衡器。我认为它在调节传入流量方面没有任何用处。
您还可以将 RDS 降低至数据库.t2.micro。我花了大约 20 美元购买这种大小的 RDS。另外不要使用多可用区。
虽然这需要做更多的工作,但你也可以选择运行t2.microEC2 并在那里自行设置 MySQL 并完全停止使用 RDS。