如何滚动重新启动一群杂种狗


7

任何人都知道通过capistrano以“滚动”方式重新启动杂种群的好方法,例如每次一把杂种犬。如果在这里有一些等待时间,让这部杂种加载导轨应用程序,那将是非常棒的。

我已经做了一些搜索,并没有找到太多,所以寻求帮助之前,我自己深入到mongrel_cluster宝石。

谢谢!

1

跷跷板是在Rails Oceania Rubyforge Project中发现的一种宝石,它为混杂群集提供了这种功能。然而,该项目有可能从某些位腐不havain患上了自2007年以来还是值得一看释放甚至只是掐想法:)


1
#!/bin/bash 
for PIDFILE in /tmp/mongrel.*; do 
    PID=$(cat ${PIDFILE}) 
    kill ${PID} 
    ${RUN_MONGREL_CMD} ${PID} 
    sleep 2 
done 

3

我跷跷板的方式同意以上轧制方法你在寻找。问题在于,在转换时,负载均衡可能会在不同版本的应用程序之间来回传递用户,最终导致这种情况。

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

请注意,数据库迁移可能会使整个方法有点危险,这一点非常重要。如果您只有附加迁移,则可以在部署之前随时运行这些迁移。如果要删除列,则需要在部署后执行。如果要重命名列,最好将其分为创建新列和将数据复制到其中的迁移,以便在部署之前运行,并使用单独的脚本在部署后删除旧列。事实上,如果你没有做出特定的努力来组织它们,通常在生产数据库上使用你的定期迁移可能是危险的。所有这些都意味着更频繁的交付,因此每次更新的风险较低,复杂程度较低,但这是另一个回应的主题。

  0

感谢马特,是的,我没有想到提及它,但我肯定会犯错安全的一面,几乎任何迁移只是做一个更完整的关机 - 迁移 - 启动 25 9月. 082008-09-25 05:07:14