我如何扩展我的RoR应用程序?

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

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

在Web服务器/ ruby​​中间件方面,我希望会话由Web服务器/ ruby​​中间件层进行负载均衡的主Web服务器控制。 它应该交出新的会议释放主机。

我需要在Web服务器/ruby中间件一侧进行负载平衡。 Web /中间件会话应该是primefaces的(我没有兴趣在多个主机上复制它们)

我希望将尚未保存到数据库的事务数据logging到中间重做日志中 – 在失败恢复的情况下重新运行。

在数据库层:

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

我不希望跨所有主机复制数据库数据,因为它需要很长时间 – 延迟。

我想把一个algorithm,将'创build'types的请求引导到正确的数据库。 想到负载平衡。

数据库主控制器应该知道哪个3-DB设置为“更新/读取/删除”请求。

我的testingWeb服务器是webrick,后端数据库是Postgresql(尽pipe这对于RoR来说并不重要)。

我相信我需要将sessionId绑定到每个事务,并且还要保留一个重做日志,以便在发生故障后需要重新加载会话。

还有什么其他devise问题可能会遇到? 另外,我应该使用什么Web服务器和数据库服务器来做烦琐的工作? 主DB和主Web服务器有什么好的select?

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