如果你能提供帮助,我正在寻找建议、帮助或“你不能那样做”的答案。
我在使用 .NET 4.0 并运行 MVP 中的 Web 应用程序的 .NET 开发团队中。现在,我们有一个由 4 个运行 Win2K3 和 IIS 6(明年升级)的 IIS 机器组成的网络农场,并且一个 F5 BigIP 设备正在使用粘性会话来跨越所有四个机器的流量。由于它的成功,我们的应用程序的规模和范围正在扩大。我向你保证,这是一个很好的问题。然而,我们正在经历成长的痛苦。我们希望在当前使用的 4 台机器上保留事务工作(通过各种 Web 表单添加/编辑/删除),然后添加另外 2 台机器,仅用于报告/指标的工作量。
这是我们想要做的:
使用可用的 Oracle.Web.dll 对象类将会话状态放入我们的 Oracle 数据库,并针对我们的 Oracle 11g DB 运行 .SQL 文件以正确设置会话。因此,如果一个盒子死了,会话数据仍然存在。
设置我们的 web.config 以在所有 4 个当前框中为我们的会话提供程序使用 Oracle 数据库。
到目前为止,一切都很好。这是相当基本且可重复的。不用担心。这是我卡住的地方:
我们想要提取此应用程序的报告 ASPX 文件并将它们放在 2 个不同的(新)IIS 框(现在总共 6 个)上,F5 BigIP 仅对这两个框进行负载平衡,以便使用粘性会话进行报告. 将其他 4 个留给 OLTP 事务性工作,不带报告。
不知何故,我们希望以某种方式使用我们在上面创建的相同会话存储来附加到仅运行报告机制的 2 个 IIS 框,跟踪用户的会话,而不必重复登录/身份验证/授权并填写安全类具有运行报告的用户权限。报告是应用程序的一部分,但它只会处理报告部分,并且只有该代码会被放到 2 台新机器上。如果当前用户的会话仍然处于活动状态、有效并且我们可以访问它,它就可以独立运行。
就好像我们想要一个分布式应用程序结构,其中不同的 IIS 服务器运行 Web 应用程序的不同部分,但共享会话状态。
有没有人遇到过这样的事情?这是可能的还是不可能的?还是有更好的选择?感谢您提供的任何帮助。