1

我一直在一台大型专用服务器上运行 Rails 应用程序。现在为了扩展,我想切换到云服务托管商并在 3 个实例上提供应用程序 - 应用程序、数据库和 Redis。

我在 Heroku 性能方面的经验非常糟糕,因此成本效率也很低。所以对我来说,还有 2 个替代方案:Engineyard 和 Enterprise-Rails。

我发现重要的是Engineyard不提供自动缩放选项来处理峰值。另一方面,Enterprise-Rails 没有太多的文档,大部分是由正在设置所有内容的支持人员处理的。

还有什么其他区别,我应该为我的网站使用什么?我不需要太多的行政工作,我也没有这方面的经验。基本上,我只是希望我的站点以最佳的安全、稳定和成本效益运行,而无需涉及太多的个人工作。

4

2 回答 2

3

我此时正在 AWS 之外运行一个大型 Rails 应用程序,我对此非常满意。以前我有许多专用的盒子,它们总是会导致问题——它们中的一个迟早会由于某种原因崩溃,Raid 失败,数据库问题等等。

在 AWS,我将 RDS 用于数据库,将弹性缓存用于缓存,我将所有代码保存在一个充当暂存服务器的胖实例上,并获取可变数量的保留实例以通过 NFS 加载代码。

我还使用自动缩放——我们已经为一些预留实例预付了费用,自动缩放有助于在 CPU 使用率高于 60% 时启动节点,然后在低于 25% 时将其移除。自动缩放规则基于 cloudwatch 警报,可以设置为监视特定的一组实例、内存缓存服务器等,当某些缩放活动发生时,例如超过 100 个实例时,您甚至可以通过 SNS 收到电子邮件和 SMS 通知在不到 1 小时内发送垃圾邮件(大量流量高峰)。顺便说一下,这些实例也会直接添加到负载均衡器中,您不需要弄乱会话存储,因为您可以使用非常好的粘性会话功能。

最近我还开始使用带有现货实例的第二个启动组,这在 cloudwatch 规则方面有点复杂,但我每个月都能节省很多,因为现货价格要低得多。当我出价的现货价格(最低)不够时,我的设置切换回预留实例。

甚至最近我也开始使用 CloudFront,它可以让我的应用程序的页面资产加载得非常快(大约 2 兆的 CSS、JS、一些图标精灵)。以前我是通过负载均衡器直接从实例提供服务。

这需要大约 20 个小时来部署、测试和调整以获得最佳性能和可用性。

我对 AWS 的一个问题是,除非您准备买单,否则没有任何支持。他们声称无需订阅即可提供一些支持,但支持领域的唯一选择是计费。哈。幸运的是,这一切都足够稳定,不会让我处于不得不为此付出代价的境地。

总体而言,Rails 非常适合 AWS。我每个月花费不到 2 个小时进行维护,而我之前花费了 30 多个小时。对我来说最重要的是,我知道我可以 GTFO 度假 X 个月,因为我知道什么都不会造成任何麻烦——一年多没有收到监控警报。

稍后编辑:该应用程序是一个具有白标功能的体育网站,大量用户,大量管理员在后端处理内容,数据库密集,因为我们显示的市场定价数据应该每隔几秒钟更新一次。我每页的平均加载时间约为 3 秒,专用服务器在做同样的事情——数据库、内存缓存、存储、负载平衡、Web 应用程序。现在我的平均时间不到 1 秒。现在每月的账单大约低 8 倍。

于 2013-10-02T20:34:09.770 回答
-1

虽然 Engine Yard 不提供自动缩放(它正在开发中),但我们确实有一个相当容易使用的缩放功能,允许您在需要时一次启动多个实例。

Enterprise-Rails 之类的优势在于完整的文档、从 CLI 或仪表板部署的选择以及我们出色的支持团队。与直接使用 AWS 等服务相比,使用 Engine Yard 并从个人机器或其他云设置移动也更容易。

于 2013-10-03T13:26:19.473 回答