Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 扩展RubyonRails站点_Ruby On Rails_Linux_Scalability_Cluster Computing_Grid Computing - Fatal编程技术网

Ruby on rails 扩展RubyonRails站点

Ruby on rails 扩展RubyonRails站点,ruby-on-rails,linux,scalability,cluster-computing,grid-computing,Ruby On Rails,Linux,Scalability,Cluster Computing,Grid Computing,我正在开发一个RubyonRails应用程序,并希望在生产环境中进行部署。我有多台配置相同的Ubuntu web服务器可以使用,但我不知道如何跨多台主机扩展RoR应用程序和db数据 我想在每台主机上同时安装一个web服务器和一个db服务器 在web服务器/ruby中间件方面,我希望会话由在web服务器/ruby中间件层上进行负载平衡的主web服务器控制。它应该将新会话移交给空闲主机 我需要在web服务器/ruby中间件端实现负载平衡。Web/中间件会话应该是原子的(我对跨多个主机复制它们不感兴趣

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

我想在每台主机上同时安装一个web服务器和一个db服务器

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

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

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

在DB层中:

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

我不希望在所有主机上复制DB数据,因为这需要太长的时间——延迟

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

DB主控制器应知道“更新/读取/删除”请求的3-DB集

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

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

我可能会遇到哪些其他设计问题?另外,我应该使用什么web服务器和DB服务器来执行grunt工作?主数据库和主web服务器的好选择是什么


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

在我上一份工作中,我们在以下基础设施方面运气不错:

1负载平衡器-nginx

3个应用服务器-精简

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

2个备用箱

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


如果您需要更多,那么heroku可能是投资回报率方面更好的选择。很明显,heroku是一个更好的选择,即使是较小的扩展问题,在上面的计划中,您在系统管理中有一个噩梦。

如果您发现太多,请放弃并使用heroku。您当前的生产架构是什么?这些是相当复杂的需求-您确定它们是必要的吗?随着时间的推移,你能用迭代的方法实现吗?我很好奇你的数学,为什么heroku在ROI方面会更好。我觉得每次我需要一些简单的heroku向你收费的东西,例如,我需要运行工作进程或搜索服务器。。。等等更多$$$嗯,这可能不再相关,因为这是基于已有两年历史的其他选项和技术,但我认为想法的要点是相同的:例如,让一个全职devops来管理基础设施的成本,而不是支付您所需的费用。现在有很多其他的选择,尽管它们在heroku空间中竞争,对于特定的应用可能更好。