多服务器共享Session

For_Ever_Do_ 2010-03-16 01:40:27
我再把问题描述的详细些

网站 Lucy'WebStie 原来只部署在一台服务器上 session可以随便使用

现在流量增大 多加了一台服务器 并且加入了loadbalance服务 做负载均衡处理

但这样一来 session的使用就没那么简单了

服务器有两台 192.168.0.123 192.168.0.124 两台上面都是Lucy'WebStie这个网站
webconfig配置如下
<sessionState
mode="StateServer"
cookieless="false"
timeout="240"
stateConnectionString="tcpip=192.168.0.123:42424"
stateNetworkTimeout="14400"
/>
123上服务启动了 那个键值也改成1了
不过网上说这样还不行 还要配置
<machineKey
validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"
decryptionKey="5FC88DFC24EA123C"
validation="SHA1"
/>
这个是什么东西? 听说还要把两台机子上的网站实例名统一 那什么是网站实例名? 据说不这样 两台机子对于同一个客户端生成的sessionID不一样 sessionID生成机制是什么?
要使两台机子共享一个session 我改怎么配置?
请大牛门稍加指点 谢谢!

出于性能考虑 只能用stateserver 那些提出用sqlserver的同学们 省省口水吧 那个性能无法接受 并且我们只有oracle 谢谢!
...全文
457 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
For_Ever_Do_ 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 leonbingo 的回复:]
现在还有什么问题么?
[/Quote]
对 还有问题 网站实例名称是什么东西 两台服务器我改怎么配置成一样的?
煊烨 2010-03-16
  • 打赏
  • 举报
回复
machineKey 是用于标识的加解密,如果machineKey不一致,在一台服务器加密,然后再另外一台服务器解密就会出错。


另外负载均衡理论上是不需要考虑Session的问题,因为这是负载均衡软件(硬件)来解决的, 一段时间内同一个IP的请求都应锁定在某台服务器上,不可能一会到这台,一会到那台
leonbingo 2010-03-16
  • 打赏
  • 举报
回复
现在还有什么问题么?
For_Ever_Do_ 2010-03-16
  • 打赏
  • 举报
回复
自己顶下
seesea125 2010-03-16
  • 打赏
  • 举报
回复
memcached
zzxap 2010-03-16
  • 打赏
  • 举报
回复
多服务器,用数据库保存比较好点
For_Ever_Do_ 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leonbingo 的回复:]

如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。”那么说明你没有让你的应用程序使用统一的machineKey,那么machineKey的作用是什么呢?按照MSDN的标准说法:“对密钥进行配置,以便将其……
[/Quote]
也就是说 只要配置了这句话就OK了?
<machineKey
validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"
decryptionKey="5FC88DFC24EA123C"
validation="SHA1"
/>
maomao90 2010-03-16
  • 打赏
  • 举报
回复
帮楼主顶,

学习了
leonbingo 2010-03-16
  • 打赏
  • 举报
回复
如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。”那么说明你没有让你的应用程序使用统一的machineKey,那么machineKey的作用是什么呢?按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和 ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。
For_Ever_Do_ 2010-03-16
  • 打赏
  • 举报
回复
纠结 这里大牛真的很少....

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧