【问题标题】:Multiple site strategy on web role(s) and cloud service(s)Web 角色和云服务的多站点策略
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 我可以在单个 webrole 上为多个网站设置多个云设置吗?
  • 关于您回答中的第 1 点,我无法共同说明为什么我们不允许提供相同的端口号。在我的场景中,我在同一个云服务中有 3 个不同的 Web 角色。我的网站处于不同的网络角色,将被部署到不同的机器上,因此我应该被允许为所有这些机器使用相同的端口号。
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 2011-03-27
相关资源
最近更新 更多