【问题标题】:Deploying ASP.NET to single server without service interruption [duplicate]在不中断服务的情况下将 ASP.NET 部署到单个服务器 [重复]
【发布时间】:2011-10-25 03:06:01
【问题描述】:

可能重复:
How Do I deploy an application to IIS while that web application is running

How to deploy an ASP.NET Application with zero downtime

Publishing/uploading new DLL to IIS: website goes down whilst uploading

Is smooth deployment possible with componentized ASP.NET MVC apps?

我有一个在单个服务器上运行的网站(因此没有负载平衡器)。当我使用 MSDeploy 进行部署时,我的虚拟目录中的所有文件都会被覆盖。当然,这是意料之中的。问题是我的用户在 IIS 重置时会被中断 15-30 秒左右。没什么大不了的,但如果有0中断会更好。我不认为这是可以避免的,但想检查一下 SO 上是否有人知道我不知道的事情

【问题讨论】:

  • 这个问题有帮助吗:stackoverflow.com/questions/148084/…
  • 我已经写了很多次关于这个问题的答案,所以我希望你不要认为我在利用我的 mod 角色来关闭这个副本。

标签: asp.net iis-7.5 microsoft-web-deploy


【解决方案1】:

顺便说一句,我在这里提到的方法:How to deploy an ASP.NET Application with zero downtime 是即使我们在我的公司也遵循的方法,到目前为止它对我们来说效果很好。我们开发了一个应用程序,可以帮助我们实现同样的目的..

它与 Teamcity 集成,这是一个持续集成工具,可以告诉我们部署的进度并记录相同的内容。

【讨论】:

  • 您使用哪种方法? TXF?
  • 我不确定我们是否使用 TxF.. 但它不会用损坏的部署污染您的部署共享,并且您需要管理相同的 TxF.. 我们为每个修订创建了不同的文件夹然后每天运行一个清理过程来清理旧版本。
【解决方案2】:

如果您的代码或 web.config 已更改,IIS 将重新启动应用程序。可能有办法解决这个问题,但所涉及的工作量将远远超过收益。

【讨论】:

    【解决方案3】:

    这是可行的,只是取决于您希望构建/部署的复杂程度。

    例如你可以:

    • 将您的站点部署到新文件夹(即 sitename_deploy)
    • 为新文件夹创建一个虚拟目录
    • 强制加载新站点(以便 IIS 启动该站点)
    • 重命名现有站点目录(即 sitename_old)
    • 将新站点文件夹重命名为正确的活动文件夹名称(即站点名称)
    • 删除您的旧网站(即 sitename_old)
    • 删除您在第 2 步中创建的虚拟目录。

    应该说我还没有真正尝试过,所以它可能是垃圾,当虚拟目录路径发生变化时,IIS 可能会重新启动站点。 ;-) 如果它确实有效,那么您唯一的停机时间就是重命名两个目录所需的时间。

    【讨论】:

    • DoctorMick 说的差不多,但在使用 ARR 的 powershell 脚本中:github.com/yosoyadri/IIS-ARR-Zero-Downtime/blob/master/…
    • 我很确定这会重新启动应用程序。 web.config 更改/移动。
    • 这会在您重命名/切换文件夹时导致一些停机时间。蓝绿色部署的 yosoyadri/IIS-ARR-Zero-Downtime 方法是可行的方法。
    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多