我们有一个运行 ASP.NET Web 应用程序的 4 个服务器集群,使用 ASP.NET 状态服务器服务进行会话。在 4 台服务器之一上运行 ASP.NET 状态服务器服务,其他服务器配置为查看此内容。很多时候我们必须给服务器打补丁,而在状态服务器上打补丁需要几分钟的停机时间。
有没有办法在一个集群中配置两个以上的 ASP.NET 状态服务器服务,所以如果一个出现故障,另一个会接管?
我们有一个运行 ASP.NET Web 应用程序的 4 个服务器集群,使用 ASP.NET 状态服务器服务进行会话。在 4 台服务器之一上运行 ASP.NET 状态服务器服务,其他服务器配置为查看此内容。很多时候我们必须给服务器打补丁,而在状态服务器上打补丁需要几分钟的停机时间。
有没有办法在一个集群中配置两个以上的 ASP.NET 状态服务器服务,所以如果一个出现故障,另一个会接管?
我会研究会话状态分区。这里有很好的信息:http: //blog.maartenballiauw.be/post/2008/01/ASPNET-Session-State-Partitioning-using-State-Server-Load-Balancing.aspx
ASP Stateserver 不会从第一个节点复制会话。
但至少在下次重试时保持您的 Web 正常运行。
在MSCS集群环境下实现ASP状态服务的思考
如果第一个失败而不会丢失存储在第一台服务器上的会话信息部分,则第二个 ASP.NET 状态服务器服务无法接管。第二台服务器将很好地处理新会话。要获得这种行为,您需要设置会话状态分区(请参阅Jon Galloway 的回答)。
这种行为是设计使然;ASP.NET 状态服务不会在服务器之间复制会话数据。
如果您需要将进程外会话数据复制到多台服务器,则必须使用其中一种商业产品(例如 ScaleOut)或等待 Microsoft Project Velocity 成为生产就绪。就我个人而言,我急切地等待 Velocity 的发布,一旦我对产品有信心,我就会从 ASP.NET 状态服务器切换到它。
这个链接有更多关于 ASP.NET 会话状态的速度。