扩展托管在 EC2 上的 LAMP 网站

扩展托管在 EC2 上的 LAMP 网站

我对这一切都很陌生——我最近设法在 EC2 上启动了我的网站。下一步,我想学习如何扩展网站。我有一个大致的想法,但希望专家就如何做到这一点提供一些建议。

我的网站基于 LAMP,但也有 Red5 服务器,它允许用户记录消息并用于播放消息。

目前,这是我计划为初始扩展设置的架构。部署四个小型 EC2 实例用于以下目的:

实例 1:在此实例上,我将运行 MySql 数据库

实例 2:在这个实例上,我将运行 red5 服务器

实例 3 和实例 4 这两个实例将用于部署网站,并将在其上运行 Apache。它们将使用内部 IP 地址与实例 1 上的 mysql 服务器和实例 2 上的 red5 服务器进行通信。在需要时,我将启动相同的另一个实例

EBS - 我将拥有 50 GIG 的 EBS,用于存储所有 mysql 数据。此外,red5 将使用此 EBS 存储视频消息

负载均衡器 - 使用 Amazon 提供的负载均衡器对 Instance-3 和 Instance-4 进行负载平衡

这是我的想法。我可能说得有点离题,所以请耐心听我说完。另外,我还没有考虑扩展 MySql 服务器的情况,因为我目前不知道如何实现,以及最初是否有必要这样做。

我知道亚马逊也提供自动扩展和 mysql 扩展,但我现在不想讨论这个。

感谢您的反馈 谢谢

答案1

关于这个话题有一系列的文章@http://highscalability.com

我没有使用过 AWS,但我有在数据中心运行虚拟实例、使用 rackspace 虚拟实例和 appengine 的经验。

如何扩展(向上还是向外)在很大程度上取决于您要执行的操作。有些应用程序是 I/O 密集型的,有些是 CPU 密集型的。您的瓶颈可能是入站 I/O、处理能力或后端 I/O,或者是三者的组合,具体数量取决于您处于应用程序生命周期的哪个阶段。所有这些都需要略有不同的策略。

使用 AWS 之类的东西,通常情况下,您需要扩展,并且必须从最终目标开始,并保持应用程序松散耦合。这将允许您创建另一个实例来按需扩展。开始时,将数据库实例与主应用程序放在同一个实例上是可以的,但这通常是首先要转移到自己的服务器上的事情。

因此,您可能一开始所有东西都在一个实例上运行。然后您开始获得一些流量,并注意到数据库正在消耗您的 CPU。因此,您将数据库移至另一个实例,一切都很顺利。直到您开始获得更多流量...并且您注意到您的前端无法跟上流量。因此,您启动了几个实例,对它们进行负载平衡,并且您会高兴一段时间,然后扩展到可能十几个 Web 服务器...但是,然后您获得了更多的流量,虽然前端可以跟上,但现在您的数据库机器开始崩溃。因此,您将数据库复制到一个主服务器和几个从服务器,一切都很好...等等。

答案2

我曾在 Amazone EC2/EBS 等产品推出时从事过相关工作,并成功地将一个大型站点从物理主机迁移到其环境中。

我在博客上记录了一些我的经历,比如 http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/还有更多帖子,但我无法在此处粘贴链接。希望对您有所帮助。

相关内容