同一区域的 Azure 流量管理器云服务(多个网站)和应用程序服务

Azure Traffic Manager Cloud Services (multiple websites) and App Services in same region

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

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

现有的DNS/CNAME配置如下

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

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

但是如何使用 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。 流量管理器配置文件的端点 1 优先级为 1,目标为 dev-env.cloudapp.net(云服务 Azure 端点),端点 2 的优先级为 2,目标为 dev-env.azurewebsites.net.

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

请注意,两个流量管理器配置文件的云服务端点相同。

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