1

我正在开发一个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服务器有什么好的选择?

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

+0

如果您发现它太多了,请输入并使用Heroku。 – Skilldrick 2010-08-04 22:27:23

+1

你目前的生产架构是什么?这些都是非常复杂的要求 - 你确定它们是必要的吗?你能用迭代的方法一段时间了吗? – nfm 2010-08-04 23:20:33

回答

2

在我上一份工作,我们有不错的运气下列基础设施:

1负载平衡器-nginx

3个应用服务器 - 变薄

2冗余MySQL服务器写入

2备份盒

目前我们有4个相当大的任务关键应用程序在该环境下运行。我们有两台应用服务器来照顾第五款应用。

如果您需要更多,那么对于投资回报率而言,heroku可能会是更好的选择。显然,即使对于较小的缩放问题,heroku也是一个更好的选择,在上面的计划中,你在系统管理员中有一个噩梦。

+1

我很好奇你的数学,为什么heroku在ROI方面会更好。我觉得每次我需要一些简单的heroku收费,例如我需要运行一个工作进程或搜索服务器... etc .. etc ...更多$$$ – 2012-02-02 09:42:00

+0

好吧,这可能不相关,因为这是基于现在两年前的其他选项和技术,但我认为这个想法的要点是一样的:比如让全职员工管理基础设施而不是为你所需要的付出代价。现在有很多其他的选择,尽管它们在heroku空间中竞争,并且对于特定的应用可能会更好。 – 2012-03-30 16:04:41