(转)如何在Azure Web App中使用Canary(或A/B)部署

如何在Azure Web App中使用Canary(或A/B)部署

Canary(或A/B)部署介绍

大型网站升级时,常采用的方法是先将升级代码部署在过渡服务器上,并将部分用户导流到过渡服务器使用新功能。经过一段时间的用户验证,确定功能无误后才发布到生产服务器上。这样的部署策略叫做Canary(或A/B)部署。使用这种方式的好处很明显:

  1. 引入真实用户进行测试
  2. 新功能有错产生的影响也是有限的
  3. 原系统不受影响

本文将介绍如何使用Azure平台进行这种过渡-切换部署

Azure Web App 介绍

Azure Web App是一个Azure平台的Web应用服务器,为用户提供web服务。

Azure Slot 介绍

Slot是插槽的意思。在电脑系统的主板上,通常有多个插槽,支持外部设备的接入。例如硬盘插槽可以插硬盘,显卡插槽可以插显卡。

Azure平台上引入了插槽的概念,每个Web App缺省对应一个插槽(Producation插槽)。管理员可以为Web App增加新的插槽,系统在后台为新插槽创建一个Web App一 一对应。也就是说,每一个新插槽,都对应一个新的Web App。因此用户可以将代码发布到插槽,也既发布到插槽对应的Web App。插槽中一般用来存放待验证代码,或者待发布代码。

插槽的另一个好处是可以互换(Switch),如果待发布代码通过验证,我们可以直接将存放待发布代码的插槽和生产插槽进行互换,从而将待发布代码发布到正式生产环境,并将原生产插槽内容交换到其他插槽,这也可以算是一种备份。如果正式生产环境出现问题,还可以再次进行插槽互换,恢复之前版本代码。

如何添加一个Azure Web App

用户登录Azure Portal URL, 选择一个资源组,选择Web App,按照提示完成创建。

如何为Web App添加一个槽(slot)

选择新创建的Web App,选择槽设置-添加槽

(转)如何在Azure Web App中使用Canary(或A/B)部署_第1张图片
Slot 设置

在弹出页面中输入名称,选择是否clone,完成创建。

(转)如何在Azure Web App中使用Canary(或A/B)部署_第2张图片
Slot 创建

在流量管理中对槽进行流量设置

选择新创建的Web App,选择开发工具-在生产中测试

(转)如何在Azure Web App中使用Canary(或A/B)部署_第3张图片
在生产中测试

用户可以选择一个槽,指定流量百分比,如下图所示。

(转)如何在Azure Web App中使用Canary(或A/B)部署_第4张图片
30%

验证流量转移

通过Jmeter[1]验证,确实有30%左右(15/50)的流量流向了新建的slot站点。

(转)如何在Azure Web App中使用Canary(或A/B)部署_第5张图片
Jmeter验证

通过web app访问图标也能证明这一点:

(转)如何在Azure Web App中使用Canary(或A/B)部署_第6张图片
70%slot
(转)如何在Azure Web App中使用Canary(或A/B)部署_第7张图片
30%slot

切换插槽将代码从过渡服务器发布到生产服务器

切换插槽可以将两个插槽的内容进行交换,意味着将代码从过渡服务器发布到生产服务器。

切换插槽而不是覆盖插槽的好处是,如果发布到生产系统出现故障,还可以再次切换恢复到原有生产系统

选择新创建的Web App,选择槽设置-交换

(转)如何在Azure Web App中使用Canary(或A/B)部署_第8张图片
slot交换
(转)如何在Azure Web App中使用Canary(或A/B)部署_第9张图片
Slot交换

  1. http://www.apache.org/jmeter ↩

你可能感兴趣的:((转)如何在Azure Web App中使用Canary(或A/B)部署)