代码之家  ›  专栏  ›  技术社区  ›  Cameron Booth

如何对一个杂种集群进行滚动重启

  •  7
  • Cameron Booth  · 技术社区  · 18 年前

    任何人都知道通过capistrano以“滚动”方式重新启动杂种集群的好方法,例如,一次一只杂种。如果每个人都能有一点等待时间,让混血儿也能加载rails应用程序,那就太好了。

    我已经做了一些搜索,还没有找到太多,所以在我潜入混血儿集群宝石之前寻求帮助。

    谢谢!

    3 回复  |  直到 18 年前
        1
  •  3
  •   MattMcKnight    18 年前

    我同意跷跷板的方法,而不是你所寻求的滚动方法。问题是,在转换过程中,负载平衡会在应用程序的不同版本之间来回抛出用户。

    我们提出的解决方案(在找到seesaw之前,我们不使用它)是将一半的杂种狗从负载均衡器中离线。把他们关了。更新它们。启动它们。把那些杂种狗放回负载均衡器中,然后取下另一半。关闭下半场。更新下半场。启动它们。这大大缩短了同时运行两个不同版本的应用程序的时间。 我写了一个windows bat文件来做这个。(不建议在Windows上部署,顺便说一句)

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

        2
  •  1
  •   robertpostill    18 年前

    跷跷板是在 Rails Oceania Rubyforge Project 它为混血儿集群提供了这种功能。然而,该项目可能正遭受着一些自2007年以来哈瓦因没有发布过的烂摊子。还是值得一看的,哪怕只是为了省事:)

        3
  •  1
  •   Dan Udey    18 年前
    #!/bin/bash
    for PIDFILE in /tmp/mongrel.*; do
      PID=$(cat ${PIDFILE})
      kill ${PID}
      ${RUN_MONGREL_CMD} ${PID}
      sleep 2
    done
    
    推荐文章