我计划托管一个网站,第一阶段的目标是 30,000 名用户。它使用 php 编写并在 Apache 服务器上运行。我假设在最坏的情况下会有 8,000 名用户在线,其中 1000 名将上传照片。
一张照片在客户端将被调整为大约 1MB,并且一个 HTTP 请求仅上传一张照片。
我的计划:
- 2 个小型 EC2 实例来运行 Apache httpd
- 2 个小型 EC2 实例到 DB(Postgresql)。我用于写入数据,其他用于读取其副本。
- 数据库的 EBS 卷
- 最后,使用 Amazon S3 上传照片。
我的问题在这里
- 小型 EC2 实例是否超出了我的需求?我的意思是我应该选择微型实例吗?
- 对于一个新网站来说,8000 个同时用户是否合适(决定选择哪个 EC2 实例)
- 或者我应该选择小型实例,以便能够应对峰值
答案1
我建议您从 Big 开始(Amazon 负载均衡器具有 2 个大型实例,然后如果重负载之后资源仍然可用,那么您可以随后缩小规模。因为,如果您从小型实例开始,并且如果它无法选择负载(这有很大的可能性)那么用户将面临停机(当您升级到中型或大型实例时),并且如果该实例仍然无法满足您的请求,那么您将不得不再次执行此步骤。所以希望最好,为最坏的情况做好准备。我自己托管了一个大约有 10,000 到 15,000 个用户的网站,为此我必须使用 6 个大型 Apache 服务器实例和一个大型 MySQL RDS。现在负载很好,所以我们可能想要从负载均衡器中删除 1-2 个实例。但想象一下,如果我创建了 2-3 个小实例?负载刚一到来,服务器就会崩溃。
(不要太担心价格,因为亚马逊肯定会根据你使用的东西收费,但收费是按小时计算的,这些费用不会高到你负担不起。另外,
在启动设置之前,请先运行基准测试,您可以使用 Apache JMeter、HP loadtester、AB(apache 基准测试)。
答案2
我认为你应该从微型实例开始,它们被列为包含在你的 AWS 订阅中,但要小心;亚马逊会收取一切费用。然后,当你的网站需求增加时,启动更多实例并将其通过负载平衡器。
只是我的建议。
答案3
我的建议是使用为您运行实例的服务,并允许随着流量的增长添加更多实例。
我们使用 Scalr,此外还有 rightscale、heruko makara、cloud foundry 等。如果您使用云管理服务中现成的 AMI,而不是开发应用程序然后考虑如何将其转换为云管理环境,那么进入 EC2 会更容易。