![在具有 2 个 Web 服务器的 Azure Web 场上切换 Web 服务器时丢失会话数据。我如何与每台服务器共享密钥?](https://linux22.com/image/664117/%E5%9C%A8%E5%85%B7%E6%9C%89%202%20%E4%B8%AA%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%20Azure%20Web%20%E5%9C%BA%E4%B8%8A%E5%88%87%E6%8D%A2%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%E4%B8%A2%E5%A4%B1%E4%BC%9A%E8%AF%9D%E6%95%B0%E6%8D%AE%E3%80%82%E6%88%91%E5%A6%82%E4%BD%95%E4%B8%8E%E6%AF%8F%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%B1%E4%BA%AB%E5%AF%86%E9%92%A5%EF%BC%9F.png)
在具有 2 个 Web 服务器的 Azure Web 场上切换 Web 服务器时丢失会话数据。我如何与每台服务器共享密钥?
我们的网站在 Rackspace 上运行时运行得非常完美。后来我们迁移到 Azure,遇到了各种会话问题。我认为这是因为 Rackspace 配置了粘性会话,而 Azure 不支持它们。
我走的路对吗?如果对,有什么解决办法? - 长期 - 短期 - 立即
当前设置信息:两台服务器上的 web.config 中的 InProc 会话控制每个 Web 服务器均配备 IIS 8 Windows Server 2012 R2 VM(WEB1 和 WEB2)
如果您提供任何进一步的信息我们将非常感激。
答案1
您只需将云服务的负载平衡分配模式更改为源 IP(又名坚持会话)。您必须使用 powershell:
Set-AzureLoadBalancedEndpoint -ServiceName "MyService" -LBSetName "LBSet1" -Protocol tcp -LocalPort 80 -ProbeProtocolTCP -ProbePort 8080 –LoadBalancerDistribution "sourceIP"
详细参考:
http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode/
http://windowsitpro.com/azure/azure-load-balancer-stickiness-options
https://msdn.microsoft.com/en-us/library/azure/dn495126.aspx