想象一下,我们有一个复杂的asp.net解决方案:在IIS中托管的MSSQL + ASP.NET MVC + ASP.NET Web窗体+ WCF服务。
每周一次,必须将解决方案透明地部署到单个生产服务器,以供用户使用。部署可以包括数据库方案的更改,次要的IIS重新配置,文件的替换。部署会耗费时间并可能影响正常运行时间。
如何在不中断用户或最小化停机时间的情况下进行部署?有哪些技巧和最佳实践?
(例如,切换登台/生产环境)
答案 0 :(得分:0)
如果您的首要关注点是正常运行时间,您可以查看该站点的负载平衡服务器 - 可以将其取下,更新,然后重新启动,而另一个则更新。您需要查看在此方案中管理会话的方式,例如:使用sql server或state server机制。
答案 1 :(得分:0)
答案 2 :(得分:0)
我无法提供完整的解决方案,但有一些“对我有用”:
将数据库升级拆分为(a)向后兼容的更改和(b)更改。这样,您可以在旧版本的软件仍在运行时运行part(a)(添加字段,添加表,添加索引......)。对于(b)部分(改变字段类型,转换数据......),我认为不可能避免停机。尝试使大多数数据库更改不会中断。
宣布停机时间,以便您的用户可以适应它。在升级时,请使用app_offline.htm feature确保用户看到一条解释此情况的错误消息。它还可确保重新加载您的应用程序。无需重新加载(即“只更换文件”)的Web应用程序的就地,无停机升级可能会导致奇怪的错误。
测试升级:制作生产系统(软件和数据库)的副本,这应该在系统运行时可行。在测试系统上执行升级。如果升级过程中出现问题:修复问题,改进升级程序并重复。