【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
【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?的更多相关文章
- 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service 遇见的 3 个问题
在App Service(Windows)中部署Flask应用时的注意事项: ● 添加Python扩展插件,Python 3.6.4 x64: ●● 配置 FastCGI 处理程序,添加Web.con ...
- 【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这 ...
- 【应用服务 App Service】App Service中抓取网络日志
问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...
- 【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php
问题描述 参考官方文档部署 PHP Laravel 项目到App Service for Linux环境中,但是访问应用时候遇见了500 Server Error 错误. 从部署的日志中,可以明确看出 ...
- 【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
编写Java Spring Boot应用,通过配置logging.path路径把日志输出在指定的文件夹中. 第一步:通过VS Code创建一个空的Spring Boot项目 第二步:在applicat ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题
问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...
- 【应用服务 App Service】解决无法从Azure门户SSH登录问题
问题描述 中国区的Azure App Service(应用服务)已经支持创建Docker并选择Linux环境.在使用中,我们可以继续通过kudu站点的方式登录查看站点的一些日志及部署文件.它的登录方式 ...
- 【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP
问题描述 Azure App Service (应用服务)如何安装PHP的扩展 mcrypt(mcrypt 是php里面重要的加密支持扩展库) 准备条件 创建App Service, Runtime ...
- 【应用服务 App Service】App Service 中部署Java应用中文乱码现象
问题情形 有时候部署在 Azure App Service的 Java应用会出现乱码 详细日志 无 问题原因 因为 App Service默认的编码为gbk,所以在显示页面或传递中文字符时就会出现乱 ...
随机推荐
- 京东金融APP-新交互技术“虚拟数字人”赋能世界杯主题营销
作者:平台研发部,智能服务与产品部 距离加文·伍德提出web3.0已经过去8年时间,这8年加文·伍德创建的以太坊大放异彩,同时由web3.0引出的数字人.元宇宙也生根发芽,茁壮成长,带来了非凡的用户体 ...
- expres实现登录与修改密码
登录模块 如果登录的时候,昵称在数据库中查询的是不唯一值.需要提示用户登录失败. 即使用户密码输入正确. 然后将该消息通知相关人员,立即进行排查问题. var express = require('e ...
- css动画京东小布hover放大
<style> .box { width: 183px; height: 130px; overflow: hidden; border: 1px solid pink; } div im ...
- fasthttp 中如何使用 linux 系统调用 `sendfile`
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 接上一篇:fasthttp 中如何使用Transfer-E ...
- 【JS 逆向百例】猿人学系列 web 比赛第五题:js 混淆 - 乱码增强,详细剖析
逆向目标 猿人学 - 反混淆刷题平台 Web 第五题:js 混淆,乱码增强 目标:抓取全部 5 页直播间热度,计算前 5 名直播间热度的加和 主页:https://match.yuanrenxue.c ...
- Docker部署Jekyll
1. 起因 前两天终于下单买了个域名,10年的使用期限.既然有了域名,那自己的博客就可以搞起来了. 现在博客的记录用的是Jekyll+Github Pages,所以决定之后自己的博客网站也采用Jeky ...
- vim 从嫌弃到依赖(7)——可视模式
vim 的可视模式下可以选择一个区域,然后针对区域进行操作.可视模式有点类似于在其他编辑器上使用鼠标选中一块区域然后针对区域进行操作. vim中有3种可视模式,分别用来处理不同范围的文本: 处理字符的 ...
- 数据挖掘机器学习[二]---汽车交易价格预测详细版本{EDA-数据探索性分析}
题目出自阿里天池赛题链接:零基础入门数据挖掘 - 二手车交易价格预测-天池大赛-阿里云天池 相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据 ...
- 【深度学习项目一】全连接神经网络实现mnist数字识别
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- C/C++ Qt 信号自定义槽函数
Qt中实现自定义信号与槽函数,信号用于发送并触发槽函数,槽函数则是具体的功能实现,如下我们以老师学生为例子简单学习一下信号与槽函数的使用方法. 使用无参数信号与槽: 首先定义一个teacher类,该类 ...