1

我正在开发一个 Ruby On Rails 应用程序,并希望在生产环境中进行部署。我有多个可以使用的相同配置的 Ubuntu Web 服务器,但我不知道如何跨多个主机扩展 RoR 应用程序和数据库数据。

我想在每台主机上同时放置一个 Web 服务器和一个数据库服务器。

在 web 服务器/ruby 中间件方面,我希望会话由主 web 服务器控制,该服务器在 web 服务器/ruby 中间件层上进行负载平衡。它应该将新会话移交给免费主机。

我需要在 Web 服务器/ruby 中间件端进行负载平衡。Web/中间件会话应该是原子的(我对跨多个主机复制它们不感兴趣)

我希望将尚未保存到数据库的事务数据记录到中间重做日志中——以便在故障恢复的情况下重新运行。

在数据库层:

我希望将任何一台主机上的数据库数据复制到另外两台主机。(每个 DB 集有 3 个 DB 主机)

我不想在所有主机上复制数据库数据,因为它需要太长时间——延迟。

我想制定一个算法,将“创建”类型的请求定向到正确的数据库。我想到了负载平衡。

DB 主控制器应该知道哪个 3-DB 集用于“更新/读取/删除”请求。

我的测试网络服务器是 webrick,后端数据库是 Postgresql(尽管这与 RoR 无关)。

我相信我需要将 sessionId 绑定到每个事务并保留重做日志,以防我需要在失败后重新加载该会话。

我可能会遇到哪些其他设计问题?另外,我应该使用什么网络服务器和数据库服务器来完成繁重的工作?主数据库和主 Web 服务器有哪些好的选择?

我知道这是一个跨越多个知识领域的复杂问题。我想知道我所问的是否可能。

4

1 回答 1

2

在我的上一份工作中,我们对以下基础设施非常幸运:

1个负载均衡器-nginx

3 台应用服务器 - 瘦

2 台具有冗余写入的 mysql 服务器

2个备用箱

目前,我们有 4 个相当大的关键任务应用程序在该环境中运行。我们有两个应用服务器来处理第 5 个应用。

如果您需要更多,那么就投资回报率而言,heroku 可能是一个更好的选择。显然,即使对于较小的扩展问题,heroku 也是一个更好的选择,在上述计划中,您在系统管理员中遇到了噩梦。

于 2010-08-05T01:18:47.373 回答