亚马逊 ec2 上的 ASP.NET MVC 多实例会话管理

亚马逊 ec2 上的 ASP.NET MVC 多实例会话管理

我有一个用 asp.net mvc2 编写的 Web 应用程序。目前托管在亚马逊云 ec2 上。由于流量不断增长,我们想要迁移到多实例环境。我有一个自定义会话类,它目前在会话启动时启动(全局 asax),我正在应用程序中通过 getter 或 setter 类使用它。由于多实例任务,我必须处理漏洞安全架构。我正在寻找一种更好的方法来处理这个问题。

我正在寻找会话的良好实现以及如何在 amazon ec2 多实例环境中应用。系统架构的障碍是什么?

答案1

我们的 Web 应用程序在 EC2 上运行,但它是一个基本的 ASP.NET 应用程序,而不是 MVC。我们通过将我们的两个服务器指向一个 SQL 框(它们无论如何都会与之通信)来解决会话状态问题,并将其用于会话状态。另一个选择是使用类似Memcached或者记忆库作为您的会话状态,并以此方式在多台机器之间共享状态。

我能想到的唯一障碍是机器的命名。每个实例在重新启动时都会发生变化,因此您需要执行以下操作:

  • 设置主 memcache 或 membase 服务器。这应该在启动时为其自身设置 DNS 记录。
  • 在机器启动时,获取当前实例 ip 地址,并使用 memcached 或 membase 注册它(我认为 membase 更容易)。
  • 关机时,断开与主服务器的连接。

有一个CodePlex 上的 Memcached 会话状态和缓存提供程序它应该可以轻松帮助您完成您需要做的事情。

再次,我们解决这个问题的方法是 SQL 服务器...这对我们来说更容易设置,但我不会很快排除 memcache/membase 选项...

相关内容