如何在零停机的情况下删除Azure Traffic Manager安装程序?

如何在零停机的情况下删除Azure Traffic Manager安装程序?,azure,azure-web-app-service,azure-app-service-plans,azure-traffic-manager,Azure,Azure Web App Service,Azure App Service Plans,Azure Traffic Manager,为了降低Azure成本,我们希望删除未使用的资源 我们有一个应用程序服务,它是traffic manager设置的一部分,当用户在浏览器中键入x.com时可以访问。存在两种应用程序服务: eus-x-com.azurewebsites.net wus-x-com.azurewebsites.net 它们被添加到traffic manager配置文件中,当它们被添加到TM时,它们被配置为具有自定义域,即x.com x.com的DNS指向x-com.trafficmanager.net,管理这两个

为了降低Azure成本,我们希望删除未使用的资源

我们有一个应用程序服务,它是traffic manager设置的一部分,当用户在浏览器中键入
x.com
时可以访问。存在两种应用程序服务:

eus-x-com.azurewebsites.net
wus-x-com.azurewebsites.net
它们被添加到traffic manager配置文件中,当它们被添加到TM时,它们被配置为具有自定义域,即
x.com

x.com
的DNS指向
x-com.trafficmanager.net
,管理这两个站点的流量管理器端点的名称

这意味着现在有:

//sites under Traffic Manager control of x.com

EastUS App Service Plan 1
      eus-x-com.azurewebsites.net   (with custom domain x.com -> x-com.trafficmanager.net)

WestUS App Service Plan 1
      wus-x-com.azurewebsites.net   (with custom domain x.com -> x-com.trafficmanager.net)


//sites not assigned to a traffic manager

EastUS App Service Plan 2
      y-com.azurewebsites.net       (with custom domain y.com -> y-com.azurewebsites.net)
      z-com.azurewebsites.net       (with custom domain z.com -> z-com.azurewebsites.net)

几年后,
eus-x-com.azurewebsites.net
似乎从未失败过,也没有得到太多的使用,因此我们正在考虑让East US Service Plan 2托管一个
x.com
的实例,加上它托管的其他站点并摆脱流量管理器,而East/west Service Plan 1只保留服务计划2

其想法是:

  • 在EastUS应用程序服务计划2中创建一个名为
    x-com.azurewebsites.net的新应用程序服务
  • 将代码部署到它以使其工作
  • 给它一个自定义域x.com(即,相当于在IIS中添加主机头)
  • 将DNS更改为指向
    x-com.azurewebsites.net
    ,以便随着全球DNS服务器的更新,流量逐渐进入新的web应用程序
  • 在某个时候删除整个TM基础设施
我遇到了一个问题:尽管我可以验证DNS域所有权,但我遇到了一个限制,即两个不同的应用程序服务,即使在不同的应用程序服务计划中,也不能具有相同的自定义域设置,除非它们是流量管理器设置的一部分。当尝试将
x.com
的自定义域添加到
x-com.azurewebsites.net时,我得到一个“x.com自定义域已在应用程序服务eus-x-com.azurewebsites.net上使用”

这有点烦人,因为我没有预见到为什么技术上不可能在不同计划的两个应用程序服务上拥有相同的自定义域,如果它(用旧的IIS术语)只是一个主机头/绑定;实际使用的应用程序服务取决于基于DNS的流量到达的IP地址。自定义域绑定是一种路由机制,用于在到达承载多个站点的IIS时知道将流量传递给哪个应用程序服务。虽然我认为azure阻止同一计划中的多个应用程序服务分配相同的自定义域是明智的,但我不认为禁止不同应用程序服务计划中的应用程序服务具有相同的自定义域设置是合乎逻辑的

相反,我着眼于做:

  • 在EastUS应用程序服务计划2中创建一个名为
    x-com.azurewebsites.net的新网站
  • 将代码部署到它以使其工作
  • 将其添加到traffic manager,这样我就可以在其上设置
    x.com
    的自定义域(因为如果站点位于同一traffic manager配置文件上,则允许重复使用自定义域)
  • 更改DNS,使流量逐渐开始直接进入新的web应用程序,绕过TM
  • 在某个时候删除整个TM基础设施
这就是我遇到的另一个问题:

同一地区的两个应用程序服务(无论它们是否在不同的应用程序服务计划中)不能属于同一个流量管理器配置文件。尽管这些站点位于不同的应用程序服务计划中,但这些计划位于同一地区(EUS),门户中的错误消息为:

流量管理器配置无效,因为一个或多个域不属于订阅“xxx”

MSFT的一名员工表示,这是一条虚假的错误消息,应该解释为“同一地区的两个应用程序服务不能属于同一个TM”。如果其中一个是外部端点,您可以使用它,但它不会为您添加自定义域,这是我在将新站点添加到TM时唯一想要的

然后我发现我可以编辑TM并更改端点指向的位置:

//existing setup
TM 
  east-us-x-endpoint -> eus-x-com.azurewebsites.net
  west-us-x-endpoint -> wus-x-com.azurewebsites.net

//proposed setup
TM 
  east-us-x-endpoint -> x-com.azurewebsites.net      //edit it to point to the new x-com
                                            //delete the west US one
我已经这样做了,并编辑了端点以针对不同的应用程序服务。尽管门户网站称已经做出了更改,但仍存在以下问题:

  • 流量管理器肯定仍在向旧的应用程序服务发送流量,因为即使新的应用程序服务上还没有任何代码,该站点仍然可以工作
  • 停止旧的
    eus-x-com.azurewebsites.net
    app服务(不再在任何TM端点中配置)会导致网站停止使用HTTP 503

如果我没有删除west us的话,事情可能会解决的。虽然不是很理想,因为它速度较慢(美国东部的数据库),但我可能已经从TM中删除了
eus-x-com
,让
wus-x-com
承担负载,然后将
x-com
(在eus中)添加到TM中,并将其作为优先级1,它将拥有一个自定义域,一切正常。。除了不再有美国西部的设置。我可能得把它加回去

我现在被卡住了;我基本上需要两个应用程序服务,在同一地区,在不同的服务计划,有相同的自定义域一段时间,这样我可以切换DNS,然后拆除其中一个。或者我需要另一种方法来设置一个新的应用程序服务,以便它准备好接收流量,让所有流量开始进入它,然后删除旧的设置


我可以采取哪些步骤来启动和运行新的应用程序服务,为其提供自定义域,然后切换DNS,以便所有流量都进入新站点,而不会造成任何停机?

据我所知,traffic Manager或应用程序服务的DNS名称是全球唯一的。我们不能将同一自定义域用于两个不同的应用程序服务。阅读

因此,当您想要使用相同的自定义域时,您仍然需要一个负载平衡器为后端应用程序服务路由较高DNS级别的传入流量。我