【问题标题】:Scaling a Rails application on EC2. Is this the right way?在 EC2 上扩展 Rails 应用程序。这是正确的方法吗?
【发布时间】:2012-09-25 20:38:28
【问题描述】:

所以我有一个 Rails 应用程序。它目前作为前端和后端+数据库单独运行。

我需要扩展它以拥有多个后端服务器。

后端服务器正在运行 Resque 后台工作程序(由用户前端请求产生)。它还严重依赖回调。

我正在计划以下设置:

|front-end| --- |load-balancer (haproxy or AWS ELB)| --- Server 1 ---- Postgresql Database (+++ other DBs added via replication later if needed)
                                                    \___ Server 2 ---/
                                                                    ++ (other servers added in the same fashion later )

我担心在这种情况下如何处理将数据库放在单独的机器上。

1) 我打算创建一个新的空 Rails 应用程序,其架构与初始后端相同。让它运行并通过 HTTP 接受更新/发布,并通过远程 SSH 保持连接(以在后端触发 :after_commit 回调)。这是一个更好的主意吗?

2) 我正在使用 Postgresql,并打算在需要时切换到企业数据库。目前需要扩展后端的处理而不是数据库的部分。

3) 这种方法看起来是否可扩展?

【问题讨论】:

  • 为什么您认为您需要做的不仅仅是设置一些额外的后端服务器并将它们添加到负载平衡器?

标签: ruby-on-rails database amazon-ec2 scalability decoupling


【解决方案1】:

我不确定我是否真的理解你的问题。通常在生产应用程序中,数据库层与应用程序层是分开的。我不能完全确定这是否与您有关,但这绝对是一块有趣的手表。 http://vimeo.com/33263672 。它讨论了在 rails 和 db 层之间使用 redis 层来促进排队,并创建零停机环境。似乎它比使用第二个导轨堆栈更好?我认为它应该看起来像这样;

|ELB|网络服务器 |ELB|应用服务器 |RRDNS| Redis 服务器 | PostGreSQL 服务器 |

如果我理解你的意思。如果没有,该视频链接仍然值得一看:)

【讨论】:

    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2012-01-28
    • 2011-01-27
    • 2012-04-13
    相关资源
    最近更新 更多