在不停机的情况下将 Web 流量从一个 Azure Web 应用程序转移到另一个

Diverting web traffic from one Azure Web app to another without downtime

我有两个 Azure 网络应用:

webapp1 是我的实时网站,配置了自定义域,www.example.com。

我想转移所有传入流量,使其转到 webapp2,而不是 webapp1。

我的计划是:

  1. 将自定义域 'www.example.com' 添加到 webapp2。
  2. 更改 www.example.com 的 DNS CNAME 记录,使其指向 webapp2.azurewebsites.net(而不是 webapp1.azurewebsites.net)。

但是,这种方法行不通;当我尝试使用 portal.azure.com 将自定义域名添加到 webapp2 时,出现错误:'The host name www.example.com' 已分配给另一个 Azure 网站'。

确保此转换过程中没有停机时间很重要,因此在将自定义域名添加到 webapp2 之前从 webapp1 中删除自定义域名不是一个选项。

关于如何解决这个问题有什么想法吗?

一种可能的方法可能是配置流量管理器。您可以创建流量管理器并将 webapp1 和 webapp2 添加为端点。您还可以将流量管理器配置为使用故障转移路由,其中​​ webapp1 是主要的,webapp2 是故障转移的。

然后您云更改自定义域以指向流量管理器,以便流量继续通过流量管理器流向站点。这有望让您从 webapp1 配置中删除自定义域,然后配置 webapp2 以使用它。然后您可以更改自定义域以指向 webapp2 并删除流量管理器。

或者,您可以将流量管理器留在原地,只删除作为端点的 webapp1。

我还没有测试过这种方法,但如果有机会,我会用任何注释更新这个答案。

根据之前的回答,您可以使用 Azure 流量管理器来控制 Web 应用程序之间的流量。但是,您仍然会面临针对两个 Web 应用程序注册自定义域名的问题。流量管理器文档包含有关如何执行此操作的更多信息 - 请参阅 the FAQ section here 中的 "Can I use Traffic Manager with more than one Web App in the same region?"。

关键是如果Web Apps在同一个区域,那么它们需要在不同的scale units。上面链接的说明显示了如何检查您的 Web 应用程序位于哪个缩放单元。部署 Web 应用程序时您无法控制缩放单元,但如果您提交支持票证,您可以将您的 Web 应用程序部署到不同的Azure 支持的缩放单位。