我应该如何在 VPS 上部署我的 Rails 应用程序以实现快速扩展?

我应该如何在 VPS 上部署我的 Rails 应用程序以实现快速扩展?

我使用 NGINX、Rails 和 MySQL 创建了一个 Web 应用程序。目前它们都在单个 VPS(Slicehost)上运行。我遵循最佳实践,并维护了一个非常简约的“无共享架构”,这样一来,如果需要扩展,我只需增加几个切片即可满足需求。

考虑到我试图将成本保持在尽可能低的水平,那么在需要时引入额外切片的良好策略是什么?我最初的想法是运行 3 个 VPS。两个用于主/从配置中的数据库,一个用于 NGINX/Rails。随着负载的增加,根据需要增加其他 NGINX/Rails 服务器,而原始服务器负责处理与其他服务器的负载平衡。

你的想法是?

答案1

很多其他帖子都涉及了这个问题。一般来说:

1)使用 chef 或 puppet 等工具进行系统配置管理。

2)使用类似 fabric 或其他工具进行代码部署。

对于上述内容...这些不容小觑...以可重复的方式进行扩展是关键。

3)如果您不使用 CDN,您可能需要分离一台(或多台)服务器用于简单的静态服务(图像)。

4) 至于数据库与应用服务器,您知道您的应用程序瓶颈在哪里吗?如果不知道,请对其进行压力测试。找出几种不同常见情况下的瓶颈,并以此为基础进行容量规划。规划如何分片您的数据库(例如,基于密钥的多个副本)。规划如何分配/负载平衡您的传入流量。

为了节省成本,你可以在像 amazon 这样的网站上进行大量测试,这比像 Slicehost 这样的 VPS 便宜得多(支付数小时/天来扩展 DB 分片或应用程序服务器,而不是支付一个月的 VPS 费用,您可能不会经常使用)。

您甚至可以从 EC2 内部运行压力测试,以将流量成本降至最低。

答案2

除了 ironchef 的评论之外,我还要确保您的高可用性负载平衡基础设施运行良好您需要它;这意味着要么从一开始就使用 Slicehost 提供的负载平衡(如果他们有类似的产品可用),要么从一开始就拥有两个“前端”切片,并在它们之间共享负载平衡器 HA。您确实需要不是当您受到流量冲击时,想要匆忙地启用负载均衡器,特别是因为看起来您对这类事情还没有特别的经验。

相关内容