【发布时间】:2012-07-16 09:17:19
【问题描述】:
我正在尝试使用 C# 控制台应用程序中的 ServerManager 对 IIS 元数据库进行一些站点更改。
我想在不停机的情况下部署一个站点,为此我是:
使用新的 DLL 创建具有自己的应用程序池的新的第二个站点
添加一个可以在本地访问的绑定,这样我就可以将第一个请求发送到第二个站点并且它已“预热”
我正在从原始站点中删除 www.domain.com 的绑定,然后将其添加到第二个站点,然后调用 CommitChanges()
这就是问题开始的地方,绑定信息已正确更新,但 IIS 已停止第二个站点。有什么方法可以删除原始绑定并将其放置在新站点上而无需调用两次提交更改?
我真的想避免在这种情况下产生 ARR 开销或任何其他负载平衡等,有没有一种方法可以在不停机的情况下将绑定从一个站点交换到另一个站点?感觉真的应该有。
【问题讨论】:
-
我认为明智地进行这种重新路由的唯一方法是在您的网络中的防火墙/网关/TMG 框中进行此操作,并使用本地 URL 使两个站点都处于热状态。
-
卢克 - 完全同意架构 - 只是想看看是否有办法做到这一点,如果我可以在实际的盒子上没有停机时间并且不需要触摸任何东西,那是件好事! :)
-
实际机器上没有停机时间?绑定切换时正在处理的请求怎么样?我认为做到这一点的唯一方法是在切换之前进行负载平衡并正确排水。
-
在不偏离主题的情况下,另一个旧应用程序仍然存在并运行,更改之前的任何请求都应该去那里并得到处理,任何新请求都将转到新应用程序。通过没有活动绑定来让请求进入其中一个正是我想要避免的:)
-
我认为我和@dtryon 试图提出的观点是不支持在同一台机器上的两个站点之间进行实时切换(即使在编写网络服务器时实现这样的事情也是不支持的) -琐碎的)。在 microsoft stack 中,此方案由 ISA 角色服务器支持
标签: c# iis deployment iis-7