You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure多租户应用发布时长优化:分租户快速启用新版本方案咨询

多租户Azure应用分批次零停机升级方案

方案一:双Web App+应用网关渐进式路由(对应你设想的方案)

核心逻辑是用租户子域名做路由标识,分批次完成租户数据库更新后,将其流量切换到新版本Web App。

实现步骤

  • 部署两个Web App实例:myapp-v1(运行旧版本)和myapp-v2(运行新版本),共享租户信息数据库(需确保该库结构向前兼容,新旧版本都能正常读写)
  • 配置Azure应用网关,创建两个后端池分别指向上述两个Web App,同时配置HTTP监听器监听所有租户子域名
  • 默认路由规则将所有租户流量导向myapp-v1;当某租户数据库更新完成后,修改路由规则,将该租户的子域名(如client1.myapp.com)定向到myapp-v2
  • 自动化脚本示例(Azure CLI):
    # 执行单个租户数据库更新(示例:运行SQL脚本)
    az sql db execute-script -g 你的资源组名 -s 你的SQL服务器名 -n client1-db --file ./tenant-upgrade.sql
    
    # 更新应用网关路由规则,将该租户导向新版本后端池
    az network application-gateway rule update -g 你的资源组名 -n tenant-route-rule --gateway-name 你的AGW名称 \
      --http-listener 你的HTTP监听器名 \
      --backend-address-pool myapp-v2-pool \
      --host-names "client1.myapp.com"
    
  • 所有租户迁移完成后,销毁旧版本Web App和对应路由规则

方案二:Web App槽位+租户级流量路由(更简便,无需额外资源)

利用Web App自带的槽位流量路由功能,无需额外部署Web App或网关,直接实现分租户切换:

  • 保持现有生产槽,将新版本部署到预发布槽(staging)
  • 关键前提:新版本应用必须兼容新旧数据库结构(比如新增字段设默认值、旧版本不依赖的新表不影响旧版运行)
  • 分批次操作:
    1. 选择一批租户,先完成其数据库的版本更新
    2. 配置Web App槽位路由规则,将这批租户的子域名定向到预发布槽(新版本)
    3. 验证无误后,继续下一批,直到所有租户完成切换
  • 所有租户迁移完成后,交换生产槽和预发布槽,正式将新版本设为默认,随后可清理旧槽位

槽位路由配置示例(Azure CLI)

# 为指定租户设置流量路由到预发布槽
az webapp traffic-routing set -g 你的资源组名 -n 你的Web App名称 \
  --rule-name client1-route --action Forward --target-slot staging \
  --match-condition "HostName Equal client1.myapp.com"

该方案优势是复用现有Web App资源,操作成本更低,无需额外管理网关。

核心注意事项

  • 数据库向前兼容:必须保证新旧版本应用都能正常读写对方版本的数据库结构,避免迁移期间出现服务异常
  • 租户信息库优先兼容:更新租户信息库时,先做兼容改造,确保新旧版本应用都能正常访问
  • 自动化批量处理:将数据库更新和路由切换逻辑写成自动化脚本,用Azure DevOps或GitHub Actions批量执行,减少人工操作误差

内容的提问来源于stack exchange,提问作者Nicolas C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:10:23