缩放EC2上托pipe的LAMP网站

我对这一切都很新颖 – 我最近设法在EC2上启动我的网站。 下一步,我想学习如何扩大网站。 我有一个大概的想法,但想从专家那里得到一些关于如何去做的build议。

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

目前,这是我计划为初始缩放设置的体系结构。 部署四个小型EC2实例用于以下目的:

实例1:在这个实例中,我将运行MySql数据库

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

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

EBS – 我将拥有说50 GIG的EBS,其中将存储所有的mysql数据。 另外red5将使用这个EBS来存储video信息

负载平衡器 – 使用Amazon提供的负载平衡器负载平衡实例3和实例4

这是我的想法。 我可以走了,所以请忍受我。 另外我还没有考虑到缩放MySql服务器的情况,因为我目前不知道如何完成以及是否有必要最初。

我知道,亚马逊提供了自动缩放和MySQL缩放,但我不想现在进入。

非常感谢您的反馈

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

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

你如何扩大规模(上涨vs.下滑)很大程度上取决于你想要做什么。 一些应用程序将是I / O密集型的,一些将是CPU密集型的。 您的瓶颈可能是入站I / O,处理能力或后端I / O,或三者的组合,具体取决于您在应用生命周期中的位置。 所有将需要一个略有不同的策略。

使用类似AWS的东西,一般来说你想扩展,你必须从头开始,保持你的应用程序松耦合。 这将允许你抛出另一个实例来扩展需求。 当你刚开始的时候,把你的db实例和你的主应用程序保持在同一个实例上是可以的,但是这通常是第一个被分离到自己的服务器上的东西。

所以你可能会开始在一个实例上运行的一切。 然后你开始得到一些stream量,并注意到数据库正在吃掉你的CPU。 所以你把数据库移到另一个实例,一切都很好。 在您开始获得更多stream量之前,您会注意到您的前端无法跟上stream量。 那么,你启动了更多的实例,负载平衡它们,并且你开心了一段时间,然后扩展到可能有十几个Web服务器……但是,然后你获得了更多的stream量,而前端是保持现在你的数据库机器已经开始瘫痪了。 那么你复制你的数据库到一个主人和奴隶,一切都很好…等等等等。

我曾经在Amazone EC2 / EBS等领域工作过,当时它已经成功地将一个大型站点从物理主机移到了它的环境中。

我logging了我的博客上的一些经验,如http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/有更多的post,但我不能粘贴链接在这里。 我希望它可以帮助你。