Web角色和云服务的多站点策略

时间:2013-07-04 08:01:56

标签: .net azure cloud azure-sql-database azure-web-roles

我们有3个面向公众的Web应用程序,我们正在迁移到Azure。所有站点都使用端口80。

选项

据我所知,使用Web角色时有三种不同的选择:

1。所有3个站点都在一个Web服务中托管在单个云服务中

  • 可以通过ServiceDefinition.csdef
  • 中的hostHeader配置HTTP访问
  • 这是最便宜的
  • 要求所有项目需要同时发布
  • 网站不能单独扩展,只能作为一个整体
  • Visual Studio中的云服务项目

2。每个站点都在单个云服务中的SEPARATE Web角色上托管

  • 可以通过ServiceDefinition.csdef
  • 中的hostHeader配置HTTP访问
  • 每个网站都有自己的实例
  • 要求所有项目需要同时发布
  • 网站可以单独缩放
  • Visual Studio中的云服务项目

第3。每个站点都托管在SEPARATE云服务中的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>

请确认我走在正确的轨道上?任何意见都将不胜感激。

1 个答案:

答案 0 :(得分:4)

听起来你走在正确的轨道上。几点澄清:

  • 请记住,在同一部署中定义要在单独的Web角色中运行的站点时,每个Web角色都需要单独的端口号。如果您希望所有站点都在端口80上,则需要选项#1或#3
  • 在单个部署中,当您需要一次发布所有角色代码时,您可以选择更新特定角色而不是所有角色。
  • 您还可以查看与部署无关的部署Web代码的替代技术,例如将您的网站存储在blob中,然后根据需要下载/解压缩/安装网站,而无需重新部署。
  • 您还可以将所有静态内容保存在blob存储中,并在零重新部署的情况下随时更新这些对象。