Azure如何对扩展的应用服务计划进行负载均衡?

15

我有一个Azure应用服务,使用应用服务计划的“扩展”选项创建了5个实例。现在我不确定Azure是如何在这些实例之间负载均衡请求的?我没有看到任何负载均衡器。

此外,我如何知道哪个实例正在处理哪个请求?

1个回答

22

负载均衡器是自动创建的,您看不到它。

基本上,它会随机发送请求到实例,但可以使用ARR Affinity使其“粘性”。 您可以在应用服务的应用程序设置中找到此设置:

Portal中的ARR亲和力切换

如果打开了该选项,则负载均衡器会在响应中附加一个cookie(如果响应没有该cookie)。 这样未来的请求就会命中同一个实例。 当然,如果该实例不存在(例如由于自动缩放),则请求将再次发送到随机实例。

WEBSITE_INSTANCE_ID环境变量可以告诉您后端正在处理请求的实例。 您可以在此处找到可用变量列表:https://github.com/projectkudu/kudu/wiki/Azure-runtime-environment


@juunas 当我打开 App Service 的 CMD/Powershell 时,使用的是哪个实例?另外,当我使用 Visual Studio 发布进行部署时,是否会将其部署到所有扩展出的实例上? - Rushi Soni
对于第一个问题,我不知道 :D 但是是的,你将部署到所有实例。 - juunas
1
你可以在CMD中尝试输入echo %WEBSITE_INSTANCE_ID% :) - juunas
是的,我总是可以使用那个,但我想知道是否有办法访问所有实例的CMD/Powershell。 - Rushi Soni
1
嗯...不确定。可能不是。但文件系统在实例之间是共享的。 - juunas
1
您可以通过覆盖 cookie 来告诉 Kudu 您要连接到哪个实例。正如 juunas 所提到的,您永远不需要这样做,因为文件系统在实例之间是共享的,通过网络挂载(即 d:\home)。有关更多信息,请参见 David 的答案 - https://dev59.com/eVsW5IYBdhLWcg3wk34q#34833769 - evilSnobu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接