代码之家  ›  专栏  ›  技术社区  ›  Theofanis Pantelides

amazonec2多个服务器共享会话状态

  •  1
  • Theofanis Pantelides  · 技术社区  · 14 年前

    我有一堆负载平衡的EC2服务器。 一些服务器没有共享会话,用户不断地登录和注销。

    如何使所有服务器共享一个会话,

        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");
            }
        }
    

    -西奥