【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?

简介: 【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?

问题描述

当我们部署应用到App Service后,为了实现对生成的最小影响,通常是把新版本部署在一个预生产的槽中,然后进行验证。另一方面,为了进行A/B验证,需要把生成槽的流量,切入一部分到预生产槽中. 这个时候,我们就可以通过 路由流量(Traffic %) 来实现这个目的。

 

只是问题是:如果无法从访问的页面显示中判断出是生成槽在提供服务还是预生产槽在提供服务,是否有其他的办法来进行确认呢?

 

问题分析

浏览器访问应用时,会自动路由到特定槽后,在该客户端会话生存期内都将“固定”到该槽。 在客户端浏览器上,可以通过查看 HTTP 标头中的 x-ms-routing-name cookie 来查看会话固定到哪个槽。 路由到“暂存”槽的请求具有 cookie x-ms-routing-name=staging。 路由到生产槽的请求具有 cookie x-ms-routing-name=self

使用 curl -v <url> 能非常方便的查看到 x-ms-routing-name 的值:

 

 

浏览器的开发者模式中,查看Request Cookie值:

 

 

附录一:附上修改Routing rule的REST API 方法:

使用PostMan发送 PUT 请求到:

https://management.chinacloudapi.cn/subscriptions/<your subscription>/resourceGroups/<your resource group >/providers/Microsoft.Web/sites/<your site name>/config/web?api-version=2018-11-01

如果是需要请求之前所有Traffic设置,就在Body中设置如下属性:

{
    "properties": {
        "routingRules": [],
        "experiments": {
            "rampUpRules": []
        }
    }
}

如果是需要对Traffic rule进行设置,可以借鉴:

{
 "properties": {
  "routingRules": [
   {
    "actionHostName": "<your site name>-slot1.chinacloudsites.cn",
    "reroutePercentage": 50.0,
    "changeStep": null,
    "changeIntervalInMinutes": null,
    "minReroutePercentage": null,
    "maxReroutePercentage": null,
    "changeDecisionCallbackUrl": null,
    "name": "slot1"
   },
   {
    "actionHostName": "<your site name>-slot2.chinacloudsites.cn",
    "reroutePercentage": 50.0,
    "changeStep": null,
    "changeIntervalInMinutes": null,
    "minReroutePercentage": null,
    "maxReroutePercentage": null,
    "changeDecisionCallbackUrl": null,
    "name": "slot2"
   }
  ],
  "experiments": {
   "rampUpRules": [
    {
     "actionHostName": "<your site name>-slot1.chinacloudsites.cn",
     "reroutePercentage": 50.0,
     "changeStep": null,
     "changeIntervalInMinutes": null,
     "minReroutePercentage": null,
     "maxReroutePercentage": null,
     "changeDecisionCallbackUrl": null,
     "name": "slot1"
    },
    {
     "actionHostName": "<your site name>-slot2.chinacloudsites.cn",
     "reroutePercentage": 50.0,
     "changeStep": null,
     "changeIntervalInMinutes": null,
     "minReroutePercentage": null,
     "maxReroutePercentage": null,
     "changeDecisionCallbackUrl": null,
     "name": "slot2"
    }
   ]
  }
 }
}

注意:在发送请求时候,需要携带Authorization Token。(最开的获取方式为Azure 门户,通过F12查看发送请求中的Authorization,复制出来用在Postman中)

 

 

参考资料

路由流量: https://docs.azure.cn/zh-cn/app-service/deploy-staging-slots#route-traffic

 

相关文章
|
29天前
|
缓存 容器 Perl
【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释
terminationGracePeriodSeconds : 这个参数的定义是从pod收到terminated signal到最终shutdown的最大时间,这段时间是给pod中的application 缓冲时间用来处理链接关闭,应用清理缓存的;并不是从idel 到 pod被shutdown之间的时间;且是最大时间,意味着如果application 已经gracefully shutdown,POD可能被提前terminated.
|
1月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
1月前
|
Java 开发工具 Windows
【Azure App Service】在App Service中调用Stroage SDK上传文件时遇见 System.OutOfMemoryException
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
|
1月前
|
安全 Apache 开发工具
【Azure App Service】在App Service上关于OpenSSH的CVE2024-6387漏洞解答
CVE2024-6387 是远程访问漏洞,攻击者通过不安全的OpenSSh版本可以进行远程代码执行。CVE-2024-6387漏洞攻击仅应用于OpenSSH服务器,而App Service Runtime中并未使用OpenSSH,不会被远程方式攻击,所以OpenSSH并不会对应用造成安全风险。同时,如果App Service的系统为Windows,不会受远程漏洞影响!
|
SQL 网络安全 Windows
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
660 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
732 1
|
6天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
|
2天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。

热门文章

最新文章