2010-03-12 59 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

回答

相關問題