zoukankan      html  css  js  c++  java
  • State Server实现多机器多站点 Session 共享 全手记

    网络环境有2台windows 2008 (192.168.1.71,192.168.1.72) 需要部署成 WebFarm,提高容错性。 网站部署在2台机器上的2个站点,如何才能做到Session的共享呢?

    第一个方法:不共享。用HAProxy作负载均衡,它支持session会话保持功能,即同一个IP只转发到一台服务器上。基于cookies的session sticky

    第二个方法:State Server 。 

    选择71作为State Server,修改注册表的[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters]中的AllowRemoteConnection,把它改成1,默认是不允许远程连接的,值为0,另外在这里也可以改Port 端口号,默认的是42424端口。启动asp.net state service。

    在71,72上的IIS新建站点,不要用默认站点,文件路径,网站名字都要一样,SiteID也要一样。

    修改web.config。 在每个站点的web.config上都设置如下: (machinekey 可以在iis管理界面自动生成)

    复制代码
    <sessionState mode="StateServer" stateConnectionString=
    "tcpip=192.168.1.71:42424" timeout="30" cookieless="false" />

    <machineKey validationKey="我的validationKey"
    decryptionKey="我的decryptionKey"
    validation="SHA1" decryption="AES" />
    复制代码

    网上很多文章讲到这一步就完了,但这样的话,2个站点所产生的SessionID还是不同了, 一定要确保这些共享session的网站使用相同的一级域名,比如 www.test.com,www1.test.com,www2.test.com等等的.test.com域的网站. 测试时一定要用域名访问,假如用ip,localhost等访问,SessionID是不同的

    你可以在测试机器上修改C:WINDOWSsystem32driversetchost文件,增加2行

     192.168.1.71 www.test.com

     192.168.1.72 www1.test.com

    然后在web.config增加一句

    <system.web>
        <!-- 让其在跨站点访问时,使SESSION能共用 -->
        <httpCookies domain="test.com" />    
    </system.web>

    做一个aspx测试页面, 把Session.Session显示出来,看是不是一样,在71的WebSite 设置Session["abc"]="def", 然后在72上面Get Session看能不能取到值

    第三个方法: 放在Sql Server里, 但我不赞成使用这个,因为sql server的连接数有限,很容易成为瓶颈

        <sessionState mode="SQLServer" sqlConnectionString="Data Source=127.0.0.1;User ID=ASPState;Password=ASPState;" timeout="60" />

     第四个方法:放在MemCache里,自己实现custom的SessionStateProvider.

    网上关于memcache的有2个实现,一个是enyim的https://github.com/enyim/memcached-providers (这个依赖CouchDB)

    另外一个是http://memcachedproviders.codeplex.com/(只实现了Session,没实现OutputCacheProvider,这个net4.0才有),

    他们也是用sessionID或者SessionID+ WebSiteName作为MemCache的Key的。这里就不详细说明了

  • 相关阅读:
    Codeforces Round #678 (Div. 2)
    #Dijkstra#洛谷 4943 密室
    #线性基,点分治#洛谷 3292 [SCOI2016]幸运数字
    #线性基#LOJ 114 k大异或和
    #2-SAT,Tarjan,前缀优化建边#洛谷 6378 [PA2010]Riddle
    #树形dp,二次扫描换根法#洛谷 4284 [SHOI2014]概率充电器
    #dp#洛谷 5774 [JSOI2016]病毒感染
    #Tarjan,拓扑排序#洛谷 3436 [POI2006]PRO-Professor Szu
    #差分约束,Floyd#洛谷 2474 [SCOI2008]天平
    #Tarjan,SPFA,差分约束系统#BZOJ 2330 AcWing 368 银河
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/4585827.html
Copyright © 2011-2022 走看看