Azure中的多租户Web角色

时间:2014-05-20 08:16:24

标签: azure azure-web-roles azure-worker-roles multi-tenant

我正在尝试使用Azure设置多租户应用程序。这就是我想象的架构:

WebRole - 针对多个用户的单个应用程序(每个用户都需要自定义主机名,例如 your.site.com my.site.com yoursite.com

WorkerRole - 用于为网络角色生成新的数据库/添加主机名?

使用WebRoles和WorkerRoles背后的原因是可扩展性。

我知道您可以在csdef中为webrole添加多个主机名,如下所示:

<Sites>
   <Site name="Site1" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project1">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain1.com" />
      <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain1.com" />
    </Bindings>
  </Site>
  <Site name="Site2" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project2">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain2.com" />
      <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain2.com" />
    </Bindings>
  </Site>
</Sites>
<Endpoints>
  <InputEndpoint name="Endpoint1" protocol="http" port="80" />
  <InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="SSLName" />
</Endpoints>
然而,这需要你已经定义了你的网站,我希望能够在任何时候动态添加主机名并保留它们(所以当它自动扩展时它会选择它们)。这个想法是当用户注册该应用程序时,工作者角色选择它并在某处添加主机名(也许是webrole IIS?)。

我不知道这是否是正确的做法,或者我是否遗漏了任何东西。

1 个答案:

答案 0 :(得分:0)

恕我直言,这不是正确的做法。托管Web /辅助角色的VM的主要原因是 Stateless VMs

为了使您的方法起作用,您需要使用IIS API为每个客户创建站点,并且因为这些VM是无状态的,当您部署新代码或VM由于任何原因而关闭时,这些站点将被删除而微软必须更换它。

此外,只要您通过添加新的Web角色实例来横向扩展VM,就必须在VM启动并运行后再次创建这些站点。