【发布时间】:2013-07-04 08:01:55
【问题描述】:
我们有 3 个面向公众的 Web 应用程序正在迁移到 Azure。所有站点都使用端口 80。
选项
据我了解,使用网络角色时有三种不同的选择:
1.在单一云服务中以一个 Web 角色托管的所有 3 个站点:
- 可以通过
ServiceDefinition.csdef中的hostHeader配置HTTP访问 - 这是最便宜的
- 要求所有项目需要同时发布
- 网站不能单独扩展,只能作为一个整体进行扩展
- Visual Studio 中的 1 个云服务项目
2。每个站点都托管在单个云服务中的单独 Web 角色上:
- 可以通过
ServiceDefinition.csdef中的hostHeader配置HTTP访问 - 每个站点都有自己的实例
- 要求所有项目需要同时发布
- 网站可以单独扩展
- Visual Studio 中的 1 个云服务项目
3.每个站点都托管在单独的云服务中的一个 Web 角色上:
- 每个站点都有自己的 cloudapp.net DNS 和 IP
- 每个站点都有自己的实例
- 网站可以单独发布
- 网站可以单独扩展
- Visual Studio 中的多个云服务项目
还有什么我遗漏的重要内容吗?
可能的解决方案
选项 1 和 2 的组合。
将所有内容托管在一个云服务中:将它们全部发布在一起很好,因为它们都引用了一个需要在所有项目中一致更新的公共库项目。
在一个网络角色中托管两个网站:它们可以很好地一起扩展。
以自己的网络角色托管第三个网站由于高峰需求量巨大,需要自己扩展。
ServiceDefinition.csdef:
<ServiceDefinition name="WebTestCloudService.Test" xmlns="..." schemaVersion="2012-10.1.8">
<WebRole name="AzureWebTest1" vmsize="Small">
<Sites>
<Site name="AzureWebTest1">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test1.mydomain.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
</WebRole>
<WebRole name="AzureWebTest2" vmsize="Small">
<Sites>
<Site name="AzureWebTest2">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test2.mydomain.com" />
</Bindings>
</Site>
<Site name="AzureWebTest3" physicalDirectory="..AzureWebTest4">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test3.mydomain.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
</WebRole>
</ServiceDefinition>
请确认我在正确的轨道上?任何意见将不胜感激。
【问题讨论】:
-
嘿,我正在尝试使用 azure 负载均衡器设置选项 1。您是否需要做任何特别的事情才能正确构建和打包以部署到 azure?
标签: .net azure cloud azure-sql-database azure-web-roles