我使用NGINX,Rails和MySQL创build了一个Web应用程序。 目前他们都在一个单一的VPS(Slicehost)上运行。 我遵循最佳实践,并保持一个非常小的“无共享体系结构”,这个想法是,如果我需要扩展,我只需要增加几个片来满足需求。
有了这样的想法,我想尽可能降低成本,那么根据需要带来额外的切片是一个很好的策略? 我最初的想法是我应该运行3个VPS。 两个用于主/从configuration的数据库,另一个用于NGINX / Rails。 随着负载的增加,根据需要将其他NGINX / Rails服务器升级到其他服务器处理负载平衡的原始服务器。
你的想法?
这已经涵盖在其他各种职位。 一般来说:
1)使用像厨师或木偶工具为sysconfigurationpipe理。
2)使用像布料或什么不是代码部署的工具。
对于上述…这些不容小觑……以可重现的方式进行缩放是关键。
3)如果您不使用CDN,您可能想要分离一个服务器(或多个服务器)以获得简单的静态服务(图像)。
4)对于数据库和应用程序服务器,你知道你的应用程序瓶颈吗? 如果不是,则强调testing它。 找出在几种不同的常见情况下瓶颈的位置,并根据您的容量规划。 计划如何分割你的数据库(例如基于密钥的多个副本)。 规划如何分配/负载平衡您的传入stream量。
为了保持便宜,你可以testing很多像亚马逊这样的东西,比像slicehost这样的VPS便宜很多(支付小时/天来扩展数据库碎片或应用程序服务器与支付一个月的VPS,你可能不会使用许多)。
您甚至可以从EC2内部运行压力testing,以尽量减lessstream量成本。
除了ironchef的评论之外,我还要确保你的高可用性负载平衡基础设施在你需要之前运行良好。 这意味着要么从一开始就使用Slicehost提供的负载均衡(如果他们有类似的产品),或者从一开始就在负载平衡器HA之间共享两个“前端”片。 你不希望在交通受到打击时急匆匆地投入负载平衡器,特别是因为你看起来对这种事情不是特别有经验。