ruby-on-rails - 如何滚动重启一组杂种

标签 ruby-on-rails deployment capistrano mongrel

任何人都知道一种通过 capistrano 以“滚动”方式重新启动杂种集群的好方法,例如,一次一个杂种。每个人都有一点等待时间会很棒,让杂种也加载 rails 应用程序。

我已经做了一些搜索,但没有找到太多,所以在我自己深入研究 mongrel_cluster gem 之前寻求帮助。

谢谢!

最佳答案

我更同意跷跷板方法,而不是您正在寻求的滚动方法。问题在于,您最终会遇到这样的情况:在您进行转换时,负载平衡可能会导致用户在不同版本的应用程序之间来回切换。

我们提出的解决方案(在找到我们不使用的 SeeSaw 之前)是从负载平衡器中取出一半的杂种。关闭它们。更新它们。启动它们。将那些杂种在负载平衡器中重新联机,并取下另一半。关闭下半场。更新下半场。启动它们。这极大地减少了同时运行两个不同版本的应用程序的时间。
我写了一个 windows bat 文件来做到这一点。 (不推荐在 Windows 上部署,顺便说一句)

需要注意的是,进行数据库迁移会使整个方法变得有点危险,这一点非常重要。如果您只有附加迁移,则可以在部署之前随时运行这些迁移。如果要删除列,则需要在部署后进行。如果要重命名列,最好将其拆分为创建新列并将数据复制到其中迁移以在部署前运行,并在部署后使用单独的脚本删除旧列。事实上,如果您没有特别努力地组织它们,那么在生产数据库上使用常规迁移通常可能很危险。所有这些都指向更频繁地交付,因此每次更新的风险和复杂性都更低,但这是另一个响应的主题。

关于ruby-on-rails - 如何滚动重启一组杂种,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124250/

相关文章:

ruby-on-rails - Capistrano 3 钩子(Hook)之前和之后

ruby-on-rails - 如何使用 google_drive gem 处理 grant_type 错误?

ruby-on-rails - 在 Rails 3 中使用多个可选的 where 条件(子句)进行查询?

ruby-on-rails - 如何创建一个报告类来处理用户滥用、虚假个人资料、不适当的照片?

部署到 Heroku 时 CSS 不起作用

ruby-on-rails - 每当出现 gem 错误 : __rvm_add_to_path: command not found 时使用 rails 脚本

ruby-on-rails - 生成过去 12 个月的月末日期

asp.net - VS2010发布Web应用程序速度慢

reactjs - 如何将reactJS应用程序部署到Heroku

ruby-on-rails - capistrano 中的主服务器