同一区域的 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.
请注意,两个流量管理器配置文件的云服务端点相同。
所以当我们想要真正切换时,我们只是关闭了云服务。从而减少停机时间。此外,我们没有更改数据库、存储帐户或任何其他资源,这就是我们能够将停机时间降至最低的方式。
所以我们有一个场景,我们目前正在使用云服务为两个网站提供服务,以及一些工作人员角色(工作人员角色超出了这个问题的范围)。我们在同一地区有很多环境(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.
请注意,两个流量管理器配置文件的云服务端点相同。
所以当我们想要真正切换时,我们只是关闭了云服务。从而减少停机时间。此外,我们没有更改数据库、存储帐户或任何其他资源,这就是我们能够将停机时间降至最低的方式。