Chr*_*ini 6 ruby-on-rails heroku ruby-on-rails-3
只是想知道每个人如何在Heroku上将更新推送到他们的生产服务器,而不会让应用程序停机几秒钟?
推送到Heroku(特别是使用像Unicorn这样的东西)需要一段时间才能加载Web应用程序.特别是当有最终用户试图访问该网站时.他们最终得到503页.加载Unicorn进程需要30秒到一分钟.
你需要做两件事才能做到这一点,这并非易事.
1)迁移需要向后兼容(即,在应用程序运行时运行).请参阅此文章:http://pedro.herokuapp.com/past/2011/7/13/rails_migrations_with_no_downtime/
2)使用两个heroku应用程序进行部署.我和Heroku就这个主题开了一张票,这是他们的答复:
我们目前正在开发一种解决方案,以提供零停机部署,但在可能的情况下没有ETA.
与此同时,可能的解决方法是部署到两个单独的应用程序.您可以将新代码推送到第二个应用程序,将其旋转,然后将域名移动到第二个应用程序.清洗并重复下一次部署.这不太理想,但可能会在过渡期间获得理想的结果.
如果你这样做,你会希望尽可能自动化,因为有很多方法可以搞砸了.这是一篇关于该主题的文章:http://casperfabricius.com/site/2009/09/20/manage-and-rollback-heroku-deployments-capistrano-style/
必须同时完成这两个解决方案,因为数据库迁移必须在代码的两个(实时和即时)版本中工作.一旦你有了这个工作,那么你可以解决第二个问题,让应用程序本身看起来不像它已经失效.一旦推动开始,就没有支持的方式来旋转和降低单个动态.
更新: Heroku现在提供测试版功能.要在推送之前执行以下操作:
heroku labs:enable -a APP_NAME preboot
这将在推送期间更改应用程序的行为.它将推升一个将热身两分钟的并行实例.推送几乎两分钟后,所有流量都将路由到新的应用程序.如上所述,请注意迁移,因为它们仍然是一个问题.
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |