【问题标题】:Why wouldn't I disable AAR Affinity on Azure web sites为什么我不能在 Azure 网站上禁用 AAR Affinity
【发布时间】:2017-03-28 12:16:19
【问题描述】:

在部署新网站时默认启用 AAR Affinity 以允许客户端反复访问同一个 Web 服务器实例。我想知道为什么默认启用此功能,以及我是否需要此功能。据我了解,Azure 上不提供会话存储和类似功能。如果您想要这种行为,Microsoft 建议使用 Redis 作为共享存储。我的问题是,使用 AAR Affinity 有什么好处以及不禁用它的任何理由?在没有它的情况下运行,也会使负载均衡分布更均匀。

【问题讨论】:

    标签: azure azure-web-app-service


    【解决方案1】:

    据我了解,Azure 上不提供会话存储和类似功能

    内存中的会话存储只是在 ASP.NET 中运行的代码,可在 Azure 网站/Web 应用程序上使用。如果您依赖此功能,则需要启用该选项,否则如果您访问不同的服务器,您将拥有不同的会话。

    此外,如果您使用某种形式的内存缓存,那么您会希望同一用户返回同一服务器以提高缓存命中率。

    【讨论】:

    • 但我猜你不能保证在以下请求中访问相同的 Web 服务器实例(即使使用 AAR Affinity)。 Azure 不支持会话传输,因此无法真正了解如何在没有 Redis 或其他形式的外部缓存的情况下使用会话存储。
    • AAR 亲和性在您的计算机上设置一个 cookie,以确保您在后续请求中访问同一服务器(这是它的主要目的)。您不会访问同一台服务器的唯一原因是该服务器不存在。它不可靠或不推荐,但它仍然有效。
    • 但是您不确定服务器在以下请求中是否仍然存在。这就是我问的重点。如果您不能依赖同一台服务器可用并且实例之间没有会话传输,那么我认为启用 AAR Affinity 没有任何意义。
    • 统计上,服务器在下一个请求时仍会在那里,没有缩放指令或硬件故障。与云中的任何其他服务器或在您自己的数据中心中运行的任何其他服务器相比,它存在的可能性并不大或小。我们的一个应用程序池在过去 5 天内一直在运行,这意味着如果您已登录并处于活动状态,那么您的会话将一直可用。
    • 我并没有宽恕这些做法,我只是告诉你它们存在。如果您正在制作一个业务线应用程序,其中在固定期限内拥有固定数量的用户,并且他们失去会话的成本很小(重试操作),那么我可以看到公司选择这种方法,而不是确保所有他们的会话对象可以被序列化,因为它可能是一个“更便宜”的解决方案
    【解决方案2】:

    使用 ARR Affinity 有什么好处以及不禁用它的任何理由?

    在 PaaS 世界中,您的 PaaS VM 实例可能会因各种原因重新启动,因此将会话信息存储在内存中并不是一个好主意。然而,ARR Affinity 是一种支持(有一些限制)那些被设计为会话敏感(又名有状态)应用程序的应用程序的方法。

    你是对的:

    在没有它的情况下运行,也会使负载均衡分布更均匀。

    HTH :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多