我在AWS上的多个服务器上托管了一个带有负载均衡器的应用程序 我使用Microsoft Web Deploy将更新推送到服务器。
假设我想将更新推送到所有服务器 我应该在部署到服务器之前从负载均衡器中删除服务器吗?当前正在由应用程序池处理的请求会发生什么情况以及进入服务器的新请求会发生什么?
答案 0 :(得分:1)
这取决于你的意思"安全"。从当前部署状态的角度来看,不会有任何影响。从数据完整性的角度来看,此过程可能不安全。在服务器中替换项目的.dll
时,应用程序池几乎立即回收。
结果是所有当前流程终止而不受惩罚。使用该系统的用户越多,未定义行为的结果就越普遍。获取的主要内容是数据库连接,通常用户将处于发布过程中,一切看起来都不错,但只有部分或全部交易都无法完成。
由于这种情况,Ajax请求有时会无限期地旋转。基本上它只是核实当前正在运行的所有东西,没有宽限期或宽恕。
要解决这个问题,大型服务通常会发出警告。
服务器将在15分钟后重新启动。
为了方便这一点,如果有一个交换机,你可以在应用程序本身的某个地方进行更改,这有助于在首次遇到请求时基本上返回一个页面,指示服务器在全局级别通过某种操作脱机。 15分钟后打开它,让它运行一段时间,因为它可能需要很长时间才能提供服务。这应该是某个地方的默认值(我知道大多数地方它长达2分钟,有时短至30秒)。
等待一小段时间以确保在切换之前已执行所有先前发送的请求,请推送您的更新。如果交换机是默认为关闭的静态值,只需按下新版本将重置静态值,一旦编译新的.dll
并重新启动应用程序池,所有内容都将重新启动。