我正在开发一个Ruby On Rails应用程序,并且想要在生产环境中进行部署。我可以使用多个相同配置的Ubuntu Web服务器,但我不知道如何在多个主机上扩展RoR应用程序和数据库数据。扩展Ruby on Rails站点
我想在每台主机上放置一台Web服务器和一台数据库服务器。
在Web服务器/ ruby中间件方面,我希望会话由Web服务器/ ruby中间件层负载均衡的主Web服务器控制。它应该将新会话交给免费主持人。
我需要在Web服务器/ ruby中间件一侧进行负载平衡。 Web /中间件会话应该是原子性的(我不想将它们复制到多个主机上)
我想要将尚未保存到事务数据的数据库记录到中间重做日志中 - 在故障恢复的情况下重新运行。
在DB层:
我想必须被复制到其他主机2任一项主机上的DB数据。 (每个数据库集有3个数据库主机)
我不希望跨所有主机复制数据库数据,因为它需要太长的延迟。
我想推出一个算法,将'创建'类型的请求引导到正确的数据库。想到负载平衡。
数据库主控制器应该知道为更新/读取/删除请求设置哪个3-DB。
我的测试web服务器是webrick,后端数据库是Postgresql(虽然这对于RoR来说确实无关紧要)。
我相信我需要为每个事务绑定一个sessionId,并且还要保留一个重做日志,以防在失败后需要重新加载该会话。
我可能遇到什么其他设计问题?另外,我应该使用什么Web服务器和数据库服务器来做烦琐的工作?主DB和主Web服务器有什么好的选择?
我知道这是一个跨越多个知识领域的复杂问题。我想知道我所问的是否可能。
如果您发现它太多了,请输入并使用Heroku。 – Skilldrick 2010-08-04 22:27:23
你目前的生产架构是什么?这些都是非常复杂的要求 - 你确定它们是必要的吗?你能用迭代的方法一段时间了吗? – nfm 2010-08-04 23:20:33