Ruby on rails 如何对混血儿集群进行滚动重启

Ruby on rails 如何对混血儿集群进行滚动重启,ruby-on-rails,deployment,capistrano,mongrel,Ruby On Rails,Deployment,Capistrano,Mongrel,任何人都知道通过capistrano以“滚动”方式重新启动杂种集群的好方法,例如,一次只重启一个杂种集群。如果每个人都有一点等待时间,让混血儿也加载rails应用程序,那就太好了 我做了一些搜索,并没有找到太多,所以在我潜入mongrel_集群宝石之前寻求帮助 谢谢 跷跷板是在中发现的一种宝石,它为混合集群提供这种功能。然而,该项目可能正遭受一些自2007年以来哈文没有发布过的问题。即使只是为了省吃俭用,仍然值得一看:)我更同意跷跷板方法,而不是你正在寻求的滚动方法。问题在于,在您进行转换时,负

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

我做了一些搜索,并没有找到太多,所以在我潜入mongrel_集群宝石之前寻求帮助


谢谢

跷跷板是在中发现的一种宝石,它为混合集群提供这种功能。然而,该项目可能正遭受一些自2007年以来哈文没有发布过的问题。即使只是为了省吃俭用,仍然值得一看:)

我更同意跷跷板方法,而不是你正在寻求的滚动方法。问题在于,在您进行转换时,负载平衡可能会让用户在应用程序的不同版本之间来回切换

我们提出的解决方案(在找到跷跷板之前,我们没有使用跷跷板)是让一半的混血儿从负载平衡器上离线。关闭它们。更新它们。启动它们。将这些混血儿放回负载平衡器中,然后取下另一半。关闭下半部分。更新后半部分。启动它们。这大大减少了同时运行两个不同版本应用程序的时间。 为此,我编写了一个windows bat文件。(顺便说一句,不建议在Windows上部署)


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

谢谢matt,是的,我没有想到要提到它,但我肯定会在安全方面出错,对于几乎所有的迁移,只需执行更完整的关机迁移启动
#!/bin/bash
for PIDFILE in /tmp/mongrel.*; do
  PID=$(cat ${PIDFILE})
  kill ${PID}
  ${RUN_MONGREL_CMD} ${PID}
  sleep 2
done