ARR Affinity Cookie 如何在 Azure 应用服务环境中实际执行应用程序请求路由和负载平衡

问题描述

我了解 ARR 亲和性 cookie 将客户端请求与特定服务器配对。如果启用,则请求将始终仅发送到与 Affinity cookie 相关联的服务器。 Azure Web 应用程序是一个无状态平台,这并不总是有用,因为它不利用 Azure 应用程序服务中的横向扩展功能

我的问题是在哪些情况下,我们应该和不应该启用 ARR 亲和性 cookie?

作为 PaaS 环境,我知道我们作为最终用户对平台没有太多控制权,但是当我尝试在 Azure Application Insights 中查看数据时,我可以看到不同的云角色名称生成的实例目前正在运行。 只是想知道应用程序请求路由和负载平衡在应用服务环境的后端是如何发生的。

谢谢。

解决方法

ARR 亲和性是旧应用兼容性的一个很好的解决方案,因为它们的设计可能没有考虑到负载平衡。

而对于无状态应用程序,您可以将此选项设置为关闭。见doc

参考:ARR affinity in Azure App service


关于应用程序请求路由和负载平衡是如何发生的,这里有一个 document about App service Architecture 可能会帮助您理解。

前端是一个七层负载均衡器,充当代理, 在不同的应用程序之间分配传入的 HTTP 请求和 他们各自的工人。目前,应用服务负载平衡 算法是一组分配的服务器之间的简单循环 对于给定的应用程序。