【发布时间】:2013-01-14 06:42:26
【问题描述】:
这是场景:
- 我们有 3 个 Web 服务器 A、B、C。
- 我们希望在不关闭应用程序的情况下发布应用程序的新版本
(例如,不使用“停机维护页面”)。 - 服务器 A 使用最新代码上线。
- 服务器 B 脱机。服务器 B 上的用户被路由到 A 和 C。
- Page1.aspx 已更新为新控件。任何从服务器 B 到服务器 A 的人
在此页面上执行操作时会收到视图状态错误。这就是我们想要防止的。
你们中的一些人如何解决这个问题?
以下是我们的一些想法(是否可以使用我们的负载均衡器,我不知道...我不熟悉负载均衡器配置 [它是 F5]):
比较幼稚的做法:
关闭服务器 A 和 B 并更新。 C 保留旧代码。所有流量都将被定向到 C,这没关系,因为它是旧代码。当 A 和 B 进行更新时,如果可能的话,告诉负载均衡器只保留 C 上具有活动会话的人,并且所有新会话都在 A 和 B 上启动。这种方法的问题是理论上会话可以持续如果用户继续使用该应用程序会很长时间。
不那么天真的方法:
类似于幼稚的方法,除了(如果可能的话)我们告诉负载平衡器“安全”页面,这些页面是没有更改的。当用户最终到达“安全”页面时,他或她会被路由到服务器 A 或 B。理论上,用户可能永远不会登陆其中一个页面,但这种方法风险较小(但需要更多工作)。
【问题讨论】:
标签: asp.net deployment webforms load-balancing