Azure 是否可以将自定义域从一个web应用移动到另一个web应用?

Azure 是否可以将自定义域从一个web应用移动到另一个web应用?,azure,azure-web-app-service,Azure,Azure Web App Service,我有一个为web app webapp-a配置的自定义域www.abc.com,我想在不停机的情况下将其传输到webapp-b 如果我尝试将域添加到webapp-b,我会 主机名www.abc.com已分配给另一个Azure网站:webapp-a 有没有办法让webapp-a继续为请求提供服务,直到DNS缓存过期 编辑:域具有基于IP的SSL绑定,DNS正在缓存虚拟IP。尝试将域分配给Azure Traffic Manager,并让Traffic Manager将请求转发到第二个站点。Azure

我有一个为web app webapp-a配置的自定义域www.abc.com,我想在不停机的情况下将其传输到webapp-b

如果我尝试将域添加到webapp-b,我会

主机名www.abc.com已分配给另一个Azure网站:webapp-a

有没有办法让webapp-a继续为请求提供服务,直到DNS缓存过期


编辑:域具有基于IP的SSL绑定,DNS正在缓存虚拟IP。

尝试将域分配给Azure Traffic Manager,并让Traffic Manager将请求转发到第二个站点。Azure Traffic Manager和Web Apps是两个不同的系统,因此您可以将相同的域名分配给Web Apps和Traffic Manager

DNS缓存过期后,从旧Azure web应用中删除域并将其添加到新应用中,然后最终删除Traffic Manager帐户

选项2

将TTL设置为非常小的值,比如5秒(我相信主机名提供者应该允许您设置),等待新的TTL在所有缓存中传播。然后将自定义域从一个应用程序切换到另一个应用程序,并将TTL设置回其原始值


这将导致任何客户只需几秒钟的停机时间,但如果您在低流量时间进行此操作,效果应该不会太差。

我也遇到了同样的问题,并且能够以一种巧妙的方式解决它

我创建了新的应用程序服务计划(以前称为Web托管计划),并为其分配了“新”Web应用程序(您可以通过新门户网站执行,也可以在Web应用程序创建期间创建服务计划)

然后,我可以在不同的托管计划中为Web应用程序分配相同的主机名

考虑到这一点,我觉得这是合乎逻辑的:最有可能的服务计划映射到物理IIS机器,并且由于显而易见的原因,您不能在同一IIS中有两个具有相同主机名的站点


完成从一个DNS到另一个DNS的迁移后,您可以删除未使用的服务计划(因为您基本上要分别支付每个DNS的费用)。

根据Azure应用程序服务团队2017年6月的一篇博文,Azure现在似乎支持将同一自定义域添加到多个web应用程序:

在某些情况下,客户希望在同一订阅中向多个web应用程序添加相同的主机名,例如地理分布的网站。我们的自定义主机名功能允许您绕过已验证主机名的验证。您只需要在首次添加主机名时验证域所有权。对于同一订阅中的所有其他应用,您可以添加相同的主机名,而无需创建任何DNS记录

你可以在上阅读整个博客文章。上面的引文摘自将相同的自定义主机名添加到多个web应用的部分

这在您希望将自定义域名从一个web应用程序传输到另一个web应用程序的情况下应该会有所帮助。您只需将相同的自定义域名添加到两个web应用,添加任何必需的SSL绑定,然后更改DNS以指向新的web应用。随着DNS更改的传播,流量应逐渐转移到新的web应用程序,而不会出现任何停机


我自己在北欧地区测试过,没有问题。这两个web应用的应用服务计划不同。我没有在同一个应用程序服务计划中对这两个web应用程序进行测试。请记住,如果您在DNS中使用IP地址/A记录,您需要两个web应用具有不同的IP地址,以便DNS能够区分您的web应用。

刚刚测试了一点,我需要将域移动到webapp-b,否则它将无法处理请求。一旦我从webapp-a中删除该域,它就会停止为请求提供服务。所以我认为如果一个客户端因为DNS缓存而直接访问webapp-a,就会发出404。我应该提到域具有基于IP的SSL绑定,这可能会影响客户端的路由方式。此解决方案不适用于我。尽管不同地区的应用程序服务计划不同,但我无法添加相同的主机名。为什么?@Harry我和你是同舟共济的,你解决了你的问题吗?事实上,我们有一次停工。:)但我认为一个解决方案可能是先安装一个,然后再使用他的故障切换功能。@JohnLeidegren,正如我所说的,这是你在azure上必须做的数百万件不明显的事情之一,你永远无法确定。我坐在同一条船上,为了不停地工作,我一直在撕扯头发。例如,我可以建议在应用服务计划中使用不同的成本。现在就这么做,我会给azure写一张罚单,但那个时候我不得不“就在此时!”这样做,所以没有时间与支持人员沟通;根据我的经验,这样的问题从几周到几周都在解决months@Lanorkin好吧,我可以和你分享一下昨天事情如何不顺利的第一手经验。Azure以一种非常愚蠢的方式验证DNS所有权,因此我无法将新站点和旧站点配置为使用相同的DNS名称,我猜这与Azure内部结构有关,当我尝试移动自定义域时,我必须先删除它们的绑定,这导致了停机时间。但是当我对生产站点这样做的时候,我得到了错误,现在主站点关闭了,我从Azure得到了各种各样的错误。。。(待续)我一直认为,如果应用程序服务在不同的计划中,那么这会解决问题,因为我认为不同的计划意味着不同的机器/虚拟机/IIS实例等,但似乎不是这样。在同一地区,我有两个不同的应用程序服务计划,每个计划都有一个应用程序服务,但我只能将自定义域X添加到其中一个应用程序服务中。尝试添加第二个会出现“已在使用”错误。如果我查找两个不同的应用程序服务名称(在不同的计划中),我会得到相同的名称