![EC2 经济高效的 Web 应用程序扩展](https://linux22.com/image/591059/EC2%20%E7%BB%8F%E6%B5%8E%E9%AB%98%E6%95%88%E7%9A%84%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%89%A9%E5%B1%95.png)
我在 Media Temple VPS 帐户中运行一个 Web 应用程序,目前正在评估切换到 Amazon EC2 的收益。它在 Apache 2 Web 服务器下运行。
目前,该 Web 应用程序几乎无法正常访问,但存在一些较大的使用高峰,这些高峰需要提前几天通知。
目前,Media Temple 的服务器内存为 2GB,足以应对高峰使用率。当我们迁移到 Amazon 时,我考虑可能要安装两个实例 - 一个用于正常使用的微型实例,以及一个用于高峰使用的小型甚至中型实例。
我正在尝试找出最好的方法来实现这一点。首先,我可能会更改 DNS,在高峰期到来时将客户端路由到更大的服务器。但在我看来,这非常危险,所以我想知道如何正确地做到这一点。
谢谢你!
答案1
实现此目的的典型方法是将多个应用服务器置于负载均衡器后面(如果您使用的是 AWS,则可能是其负载均衡器产品 ELB)。这样,您可以根据需要增加或减少应用服务器的数量。这通常称为水平扩展。
您需要弄清楚这是否适用于您的应用程序。实施多个应用服务器可能需要您进行一些重新设计。
如果它不起作用,那么您通常只能进行垂直扩展(在单台机器上增加和减少资源),而这种扩展和缩小并不容易。
答案2
亚马逊提供了一些服务来帮助你做到这一点:
- 弹性负载均衡器在一个或多个服务之间平衡传入负载(即 Apache 应答端口 80)
- CloudFront CDN缓存并分发尽可能多的静态内容
- Elastic Beanstalk自动扩展您的设置
您不必更改 DNS,只需在需要时将服务器添加到池中,并在完成后将其删除。
编辑:刚刚在上面的评论中看到问题:在 AWS 中测试很容易,您可以在大约 10 分钟内启动几个服务器和一个负载均衡器并尝试一下。