bra*_*rad 12 ruby-on-rails github heroku downtime
是否有可能在Cedar堆栈上使用Unicorn在Heroku上执行Github零停机部署?
我不完全确定重启是如何在Heroku上运行的,以及我们对重启过程有什么控制,但是我喜欢零停机部署的可能性,直到现在,从我读过的,它是不可能的
这需要一些工作.
我已经搜索了文档,但是我找不到任何可以表明Heroku上可行的内容.有什么想法吗?
Yla*_*n S 26
我无法解决迁移问题,但关于重新启动进程和避免等待时间的部分:
heroku有一个名为preboot的beta功能.在部署之后,它首先启动您的新dynos并等待一段时间然后切换流量并杀死旧流量:
https://devcenter.heroku.com/articles/labs-preboot/
我还写了一篇博文,其中使用此功能对我的应用程序的性能改进进行了一些测量:
http://ylan.segal-family.com/blog/2012/08/27/deploy-to-heroku-with-near-zero-downtime/
您可能对其称为preboot的功能感兴趣.
取自他们的文件:
此功能通过在杀死现有Web dynos之前使用新代码启动Web dynos来提供无缝部署.
某些应用程序需要很长时间才能启动,这可能会导致在部署期间提供HTTP请求时出现无法接受的延迟.
有几点需要注意:
有关它的更多信息,请参阅他们的文档.
这是可能的,但需要大量的前瞻性规划。从 Rails 3.1 开始,需要执行三个任务
\n\n上传代码和重新启动相当简单,主要问题在于其他两个,但解决方法几乎相同。
\n\n本质上你需要:
\n\n例如,如果您想删除一列,您\xe2\x80\x99将需要部署一个补丁,告诉ActiveRecord首先忽略它。只有这样您才能部署迁移并清理该补丁。
\n\n简而言之,您需要考虑数据库和代码兼容性并围绕它们进行工作,以便两者可以在版本控制方面重叠。
\n\n此方法的替代方法可能是让应用程序的两个版本同时在 Heroku 上运行。部署时,将域切换到其他版本,进行部署,然后再次切换回来。这在大多数情况下都会有所帮助,但数据库兼容性也是一个问题。
\n\n就我个人而言,我想说,如果您的部署非常重要,需要这种考虑,那么将应用程序的某些部分脱机可能是最安全的答案。通过将应用程序分解为多个较小的应用程序可以帮助缓解这种情况,并且是我经常使用的一种机制。
\n 归档时间: |
|
查看次数: |
6211 次 |
最近记录: |