在IIS中零停机上传/回滚

前端之家收集整理的这篇文章主要介绍了在IIS中零停机上传/回滚前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定这是否是提出这个问题的正确方法,但这基本上是我想做的事情:

1.)将变更集推送到IIS中的站点.
2.)不要打断用户.
3.)能够毫不费力地回滚.

所以,我知道有一些事情要发生:

1.)在Proc会话之外 – 处理
2.)超出Proc缓存 – 处理

所以仍然存在的问题:
1.)我如何防止打断用户?如果我只是将文件上传到bin,该应用程序将回收并需要10秒钟才能恢复在线状态
2.)我如何毫不费力地回滚?

我想可能的解决方案是在IIS中设置两个站点,一个是公共站点,一个是私有站点.上传到私人并获得预热.预热后,网站会被交换.回滚只需要在没有上传的情况下交换到私有.

这似乎在理论上是合理的,但我不确定机制.有任何想法吗?

解决方法

以下是我将如何解决这个问题 – 请记住,我之前没有这样做,只是我在开发环境中测试了一些概念.您应该能够使用此选项设置一个非常强大的框架,并使用您选择的语言编写一些脚本.基本上我们将设置一个贫民窟负载平衡环境,并使用它来在新站点和旧站点之间切换.

要进行设置,您将需要:

> IIS Application Request Routing(ARR)模块
> IIS Web Deployment工具(msdeploy)
> 3个不同的IIS网站(具有3个不同的IP地址 – 仅使用端口或主机头可能在此处不起作用)

首先安装ARR.

在IIS中设置3个网站:

>网站1将是您的用户实际连接的网站,比如说http://192.168.1.1/.这也是ARR网站.只需设置一个空目录,指向它,并将其放在自己的应用程序池中.根据these instructions将应用程序池设置为不超时.
>网站2和3将是实际托管您的内容的网站.这些需要在他们自己的IP上,并且由于ARR如何工作,在与网站1不同的端口上.让我们说它们是http://192.168.1.2:8080和http://192.168.1.3:8080.它们也应该位于自己的应用程序池中,并指向文件系统上的不同目录(但两个目录通常具有相同的内容)

安装ARR后,IIS Manager中将出现一个名为“Server Farms”的新类别 – 右键单击​​该类并创建一个新服务器场.

>给它一个对你有意义的名字
>添加Webserver 2和Webserver 3作为服务器 – 确保单击“高级设置”按钮,打开“applicationRequestRouting”类别,并将每个服务器的httpPort更改为8080
>完成向导 – 系统将询问您是否要创建URL重写规则 – 单击是
>您现在有一个服务器场 – 要完成配置,转到服务器场并单击代理配置按钮 – 打开“在响应头中反向重写主机”并应用更改
>在IIS管理器中,转到根级别服务器类别,然后单击“URL重写”按钮,将为您的服务器场创建一个规则

>双击规则以进入设置
>打开“条件”框
>为{SERVER_PORT}添加新条件与8080不匹配
>应用更改

此时,您掌握了完成请求所需的基础知识.如果你去http://192.168.1.1/,你将从网站1或网站2获得你的网站,但它将与其他网站完全无缝.

现在,当您要部署新版本的应用程序时,您可以执行的操作是:

>您的服务器场中的服务器的drainstop 1(在服务器场工具中,转到“监视和管理”,选择服务器并选择“使服务器无法正常使用”)
>将新版本的站点部署到脱机系统
>使用备用IP /端口预热脱机的站点
>再次将该站点提供给服务器场
>为其他服务器重复此过程

当您谈论想要编写所有这些脚本时,Web部署工具就会发挥作用.它使您可以非常轻松地为应用程序创建程序包并从命令行进行部署.如果有问题,您也可以轻松地回滚该包. ARR is also scriptable使用Microsoft.Web.Administration dll.

另一件事 – 如果你实际上在Windows 2008 R2(这是IIS 7.5)上看看Application Warmup模块 – 它应该使你的预热部分更容易.

猜你在找的asp.Net相关文章