【问题标题】:Load balancing and sessions负载平衡和会话
【发布时间】:2011-02-11 05:15:09
【问题描述】:

在 Web 服务器上进行负载平衡的更好方法是什么?我的服务在 .NET 和 Mono 中运行,因此它们可以托管在 IIS 或 Apache2 上,并且必须提供 SSL 连接。

我已经阅读了两种主要方法,将状态存储在通用服务器中并使用粘性会话,还有其他方法吗?

我已经阅读了 3 篇关于粘性会话的不同内容:

1)负载平衡设备会知道您是从哪台服务器开始连接的,并且来自该主机的所有进一步连接都将路由到同一台服务器。

2)负载均衡设备读取一个名为:JSESSIONID的cookie

3)负载均衡设备读取一个名为:ASPSESSIONID的cookie

我有点困惑,究竟会发生什么?由于连接将是 SSL,因此负载平衡没有机会读取 cookie,那又如何呢?

关于将资产存储在公共服务器中,您知道哪些解决方案?我读过 memcache 是一个很好的解决方案,但还有其他解决方案吗?

干杯。

【问题讨论】:

    标签: http session state load-balancing


    【解决方案1】:

    将 SSL 与负载平衡器一起使用时,通常将 SSL 证书放在负载平衡服务器上,而不是放在后端服务器上。这样,您只需要 1 个服务器上的 1 个证书。然后负载均衡器使用纯 HTTP 与后端服务器通信。这显然要求您的后端服务器不能直接从 Internet 访问。

    因此,如果负载均衡器负责解密请求,它还能够检查请求中的 jsessionid。

    粘性会话与 Apache 作为负载平衡器配合得很好。您应该查看 Apache 模块 mod_proxymod_proxy_balancer

    【讨论】:

      【解决方案2】:

      通常 SSL 负载平衡意味着客户端通过 HTTPS 与负载平衡器通信,负载平衡器通过 HTTP 与 Web 服务器通信。

      一些负载平衡器足够聪明,可以与 Web 服务器建立 SSL 会话(因此它可以读取 cookie)并与客户端保持单独的 SSL 会话。

      而且,一些负载平衡器可以在不使用 Web 服务器 cookie 的情况下保持粘性。我的负载均衡器能够将自己的 cookie 发送到客户端(它们还有许多其他粘性设置)。

      【讨论】:

        猜你喜欢
        • 2015-09-28
        • 1970-01-01
        • 2018-12-20
        • 2012-03-12
        • 2011-01-01
        • 2016-03-26
        • 1970-01-01
        • 2011-09-23
        • 2019-01-21
        相关资源
        最近更新 更多