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