我有多个具有以下特征的azure网站
其中一个网站是主要网站,并使用域名,没有子域名作为其网站。主机名。这是我问题的根本原因。
分别访问sub.domain.com
和domain.com
(两个不同的网站,在不同的应用服务计划中)将为每个网站设置一个关联Cookie。
Cookie规范规定,Cookie应包含在对Cookie的任何子域的请求中。域名属性。这意味着,如果我现在访问sub.domain.com
,浏览器将包含两个关联Cookie,因为它在技术上是domain.com
的子域。
Azure的负载均衡器显然只查看第一个包含的亲和力cookie。如果这恰好是属于domain.com
的那个,它将包含一个无效值,并且loadbalancer将请求循环到一个随机的自由实例。响应将包含一个带有有效关联cookie的set-cookie标头,但无论如何,这将作为后续请求中的第二个cookie包含在内,问题仍然存在。这有效地完全禁用了所有子域的ARR,只要domain.com
亲和力Cookie存在,以及我们网站所依赖的粘性会话。
目前,我已在domain.com
网站上停用了ARR,因为它只在一个实例中运行。但这是可能的,因为我们正在进行预生产。在不久的将来,我需要扩展到至少两个实例,因为天蓝色SLA需要生效。
问题可以通过将domain.com
上的网站迁移到子域名(f.ex。:www.domain.com
)来解决,但我真的不愿意这样做。
理想情况下,我希望负载均衡器检查所有包含的关联cookie,而不仅仅是第一个。但直到修复,我很想知道任何变通方法。据我所知,我能控制的ARR的唯一方面是是否应该启用。
答案 0 :(得分:0)
以下是Azure支持团队对此问题的回应:
我想告诉您问题的状态。产品团队已经分析了问题,他们将对此进行调查。他们一致同意ARR的最佳解决方案是通过所有cookie进行迭代。
不幸的是,目前我们还没有任何ETA,所以现在最好的解决方法正如你所说的那样,将www添加到你的裸域。
老实说,我认为这是最好的结果。 Azure已经认识到了这个问题,并致力于纠正它。直到那时,如果你需要粘性会话,可能的解决方法是