Azure web app service Azure Traffic Manager云服务(多个网站)和同一地区的应用程序服务

Azure web app service Azure Traffic Manager云服务(多个网站)和同一地区的应用程序服务,azure-web-app-service,azure-cloud-services,azure-traffic-manager,Azure Web App Service,Azure Cloud Services,Azure Traffic Manager,因此,我们有一个场景,我们目前正在使用云服务为两个网站提供服务,以及一些工作者角色(工作者角色超出了这个问题的范围)。我们在同一地区有相当多的环境(5个云服务环境),因为我们的用户来自同一个国家 我们正在转向应用服务,我们也希望将停机时间降至最低。我们设计的策略是在每个环境中配置两个应用程序服务(每个网站一个),并使用两个流量管理器(每个网站一个)来管理两个端点(优先级1:现有云服务,优先级2:新应用程序服务) 现有的DNS/CNAME配置如下所示 dev-env.example.com指向网站

因此,我们有一个场景,我们目前正在使用云服务为两个网站提供服务,以及一些工作者角色(工作者角色超出了这个问题的范围)。我们在同一地区有相当多的环境(5个云服务环境),因为我们的用户来自同一个国家

我们正在转向应用服务,我们也希望将停机时间降至最低。我们设计的策略是在每个环境中配置两个应用程序服务(每个网站一个),并使用两个流量管理器(每个网站一个)来管理两个端点(优先级1:现有云服务,优先级2:新应用程序服务)

现有的DNS/CNAME配置如下所示

dev-env.example.com指向网站1 dev-envapi.example.com指向网站2

现在,在新配置中,我添加了两个流量管理器,其中一个如下 dev-env.trafficmanager.net endpoint1指向云服务 dev-env.trafficmanager.net端点2指向应用程序服务(网站)

但是如何使用trafficmanager配置第二个网站

请在下面找到我们现有的云服务webrole和网站配置

<WebRole name="App.WebRole" vmsize="Medium" enableNativeCodeExecution="true">
<Sites>
  <Site name="Web">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="dev-env.example.com" />
      <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="dev-env.example.com" />
    </Bindings>
  </Site>
  <Site name="WebApi" physicalDirectory="WebRole.Api\azure.publish">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="dev-envapi.example.com" />
      <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="dev-envapi.example.com" />
    </Bindings>
  </Site>
</Sites>
<Endpoints>
  <InputEndpoint name="Endpoint1" protocol="http" port="80" />
  <InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="https" />
</Endpoints>
<ConfigurationSettings>
  <Setting name="AzureSubscriptionId" />
  <Setting name="AzureWebSchedulerCloudServiceName" />
  <Setting name="AzureWebSchedulerJobCollectionMaxQuota" />
  <Setting name="AzureWebSchedulerCertNameConvention" />
  <Setting name="ExternalUrl" />
</ConfigurationSettings>
<LocalResources>
</LocalResources>
<Certificates>
  <Certificate name="Windows Azure Tools" storeLocation="LocalMachine" storeName="My" />
  <Certificate name="https" storeLocation="LocalMachine" storeName="My" />
</Certificates>
<Imports>
</Imports>
<Startup>
  <Task commandLine="Role_Start\Bootstrap.bat" executionContext="elevated" taskType="simple">
    <Environment>
      <Variable name="EMULATED">
        <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
      </Variable>
    </Environment>
  </Task>
</Startup>


因此,它恰好是开箱即用的,我们只需要在webrole中为每个网站添加一个流量管理器配置文件。 以webrole中网站中定义的相同url端点作为流量管理器配置文件的目标,我们就可以开始了

具有两个azure端点(一个云服务和一个应用程序服务)的流量管理器配置文件,比如说dev env,dev-env.example.com以dev-env.trafficmanager.net为目标。 traffic manager配置文件的端点1的优先级为1,目标为dev-env.cloudapp.net(云服务Azure端点),端点2的优先级为2,目标为dev-env.azurewebsites.net

另一个具有两个azure端点(一个云服务和一个应用程序服务)的流量管理器配置文件,比如说dev envapi,dev-envapi.example.com针对dev-envapi.trafficmanager.net。 traffic manager配置文件的端点1的优先级为1,目标为dev-env.cloudapp.net(云服务Azure端点),端点2的优先级为2,目标为dev-envapi.azurewebsites.net

请注意,云服务的端点对于两个traffic manager配置文件都是相同的

因此,当我们想要真正切换时,我们只是关闭了云服务。从而减少了停机时间。此外,我们没有更改数据库、存储帐户或任何其他资源,因此我们能够将停机时间降至最低