首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以零停机时间部署ASP.NET应用程序

如何以零停机时间部署ASP.NET应用程序
EN

Stack Overflow用户
提问于 2008-09-29 09:25:42
回答 12查看 34.7K关注 0票数 131

要部署我们网站的新版本,我们执行以下操作:

  1. 压缩新代码,并将其上载到服务器。
  2. 在实时服务器上,删除IIS网站上的所有活动代码,将新代码zipfile放入现在为空的IIS目录

此过程完全是脚本化的,而且发生得非常快,但在删除旧文件和部署新文件时,仍可能会有10-20秒的停机时间。

对0秒停机方法有什么建议吗?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2008-09-29 09:35:04

您需要两台服务器和一个负载均衡器。下面是一些步骤:

  1. 在服务器2上打开所有流量
  2. 在服务器1上部署
  3. 测试服务器1
  4. 在服务器1上部署
  5. 在服务器2上部署
  6. 测试服务器2
  7. 在两台服务器上打开流量

问题是,即使在这种情况下,如果你使用“粘性会话”,你仍然会有应用程序重启和会话丢失。如果您有数据库会话或状态服务器,那么一切都应该没问题。

票数 84
EN

Stack Overflow用户

发布于 2008-10-13 20:40:36

Microsoft Web Deployment Tool在一定程度上支持这一点:

支持Windows事务文件系统(TxF)。当启用TxF支持时,文件操作是原子的;也就是说,文件操作要么成功,要么完全失败。这确保了数据的完整性,并防止数据或文件以“中途”或损坏的状态存在。在MS Deploy中,默认情况下禁用TxF。

似乎事务是针对整个同步的。此外,TxF是Windows Server2008的一个特性,所以这个事务特性在早期版本中不起作用。

我相信可以使用文件夹作为版本和IIS元数据库来修改0- your时间的脚本:

现有路径/url的

  • \web\app\v2.1\

下,

  • 将新的(或修改后的)网站复制到服务器

修改IIS元数据库以更改网站路径

  • from \web\app\2.0\
  • to \web\app\v2.1\

此方法具有以下优点:

  • 在新版本出现问题时,您可以轻松回滚到v2.0
  • 以部署到多个物理或虚拟服务器,您可以使用您的脚本进行文件部署。一旦所有服务器都有了新版本,您就可以使用Microsoft Web部署工具同时更改所有服务器的元数据库。
票数 60
EN

Stack Overflow用户

发布于 2015-11-08 14:04:02

通过将IIS中的应用程序请求路由用作不同端口上的两个本地IIS站点之间的软件负载平衡器,您可以在单个服务器上实现零宕机部署。这就是所谓的蓝绿色部署策略,其中在任何给定时间,负载均衡器中只有一个站点可用。部署到“关闭”的站点,对其进行预热,并将其带入负载均衡器(通常通过传递Application Request Routing运行状况检查),然后将处于运行状态的原始站点移出“池”(再次通过使其运行状况检查失败)。

A full tutorial can be found here.

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/148084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档