Amazon EC2上的PHP应用程序体系结构

我最近在我创建的Facebook应用程序中遇到了大量的流量(主要是为了教育,而不是营销的意图)

不用说,当我创建应用程序时,我没有考虑可伸缩性。我现在处于一个位置,由MediaTemple托管的微薄虚拟服务器不是在削减它,它真的来到机器的原始I / O。由于这个项目已经对我如此教育,我想我将把这作为一个机会来了解Amazon EC2平台。

该应用程序本身是在PHP(使用Zend框架)与MySQL后端。我使用应用程序缓存,尽可能与memcached。我花了周末玩EC2,启动实例,安装我想要的包,并将EBS卷挂载到实例。

但是,下一个逻辑步骤是什么,将产生良好的可扩展性结果?我是否为MySQL启动AMI实例并为Apache服务启动?或者我只是复制实例出来多次,因为我需要它们,然后在前端做一些类型的负载平衡?理想情况下,我想有一个集中式数据库,因为我对所有数据库行的聚合统计信息,但是,这不是一个硬要求(可能有一些应用程序特定的解决方案,我可以想出来解决这个问题)

我知道这可能不是一个直接的答案,所以意见和建议是受欢迎的。

这么多问题 – 他们都很好。

在缩放方面,您有几个选项。

第一个是从单个框开始。你可以向上扩展 – 一个更强大的盒子。 EC2有各种大小的实例。这涉及到每次你想要一个更大的盒子的服务器迁移。

更容易添加服务器。你可以从一个Apache& MySQL。然后,当流量增加时,为MySQL创建一个单独的实例,并将您的应用程序指向此新实例。这在应用程序和数据库之间创建了一个很好的层。听起来这是一个很好的起点,根据你的流量。

接下来,您可能需要更多的应用程序功能(Web服务器)或更多的数据库功能(MySQL集群等)。您可以让您的DNS记录指向一些运行一些负载平衡软件的前端盒(try Pound)。这些负载平衡服务器将请求分发到您的Web服务器。 EC2有Elastic Load Balancing这是一个替代管理这个你自己,可能更容易 – 我没有使用它的个人。

需要注意的一点 – EC2没有持久存储。您必须使用Elastic Block Store自己管理持久性数据。 This guide是一个很好的教程,如何做到这一点,与自动备份。

我建议你购买一些保留的实例,如果你决定EC2是前进的道路。你会在3年内拯救自己大约50%!

最后,您可能对像RightScale这样的服务感兴趣,它们提供管理服务。还有其他提供商。

http://stackoverflow.com/questions/1597930/architecture-of-a-php-app-on-amazon-ec2

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Amazon EC2上的PHP应用程序体系结构