2010-03-12 58 views
1

我有一堆EC2服务器负载均衡。 部分服务器不共享会话,用户不断登录和注销。Amazon EC2多个服务器共享会话状态

我怎样才能让所有服务器共享一个会话, 甚至可能使用partitionresolver解决方案

public class PartitionResolver : System.Web.IPartitionResolver 
    { 
     private String[] partitions; 

     public void Initialize() 
     { 
      // create the partition connection string table 
      //       web1,   web2 
      partitions = new String[] { "192.168.1.1" }; 
     } 

     public String ResolvePartition(Object key) 
     { 
      String oHost = System.Web.HttpContext.Current.Request.Url.Host.ToLower().Trim(); 

      if (oHost.StartsWith("10.0.0") || oHost.Equals("localhost")) 
       return "tcpip=127.0.0.1:42424"; 

      String sid = (String)key; 

      // hash the incoming session ID into 
      // one of the available partitions 
      Int32 partitionID = Math.Abs(sid.GetHashCode()) % partitions.Length; 

      return ("tcpip=" + partitions[partitionID] + ":42424"); 
     } 
    } 

-theo

+1

你可以尝试使用SQL Server来存储您的会话数据。它不是最有效的,但是当你考虑到不同种类的EC2实例时,它可以为你更好地工作。 – RC1140 2010-03-12 08:27:00

+0

现在我更愿意将它保持在SQL之外。 – 2010-03-12 09:14:09

回答

相关问题