0

我想使用 AzureResourceGroup为客户创建一个单一的环境,包括:

  • X 网络服务器
  • Y 应用服务器
  • 1 个数据库

理想情况下,数据库将托管在属于不同资源组的服务器上,因此我可以跨多个客户端利用弹性池。

当我尝试使用它New-AzureRmResourceGroupDeployment来执行此操作时,我收到一条错误消息,指出无法找到父 SqlServer。

我通过 PowerShell 创建了一个 SqlServer:

New-AzureRmSqlServer -servername "MyServer" -ResourceGroupName "Common" -Location "South Central US"

然后,我尝试使用以下方法部署 ClientA:

New-AzureRmResourceGroup -Name 'ClientA' -Location "South Central US"
New-AzureRmResourceGroupDeployment -ResourceGroupName 'ClientA' -TemplateFile azure.ClientDeployment.json -Client 'ClientA'

我的部署配置是:

{
  "parameters": { ... }
  "variables": { ... }
  "resources": [

    {
      "name": "MySqlServer/ClientA",
      "type": "Microsoft.Sql/servers/databases",
      "location": "[resourceGroup().location]",
      "apiVersion": "2014-04-01",
      "tags": {},
      "location": "[resourceGroup().location]",
      "properties": {
        "edition": "Basic"
      },
    }

  ],
  "outputs": {  }
}

导致错误消息:

New-AzureRmResourceGroupDeployment : 5:04:33 PM - Resource Microsoft.Sql/servers/databases 'MySqlServer/ClientA' failed with message '{
  "code": "NotFound",
  "message": "Server 'MySqlServer' does not exist in resource group 'ClientA' in subscription '{...}'.",
  "target": null,
  "details": [],
  "innererror": []
}

请注意,两个资源组(Common 和 ClientA)位于相同的订阅和位置。

是否可以有一个资源组的 SqlServer 部分,以及不同资源组的 SqlDatabase 部分?

4

1 回答 1

0

到目前为止,将 SQLServer 与一个订阅(位置)和它的数据库与另一个订阅分开是不可能的。

在MSDN 论坛中查看类似的问题

Azure 资源组也被定义为其资源的强大容器,它定义了它们的身份(查看所有 Azure 资源的 URI),以及基于角色的访问权限的传播,并控制资源生命周期 - 从而授予对资源组授予对其资源的权限,删除资源组会删除其包含的资源。

结合上述意味着包含服务器的资源组还必须包含托管/嵌套在该服务器上的数据库。

即使您尝试在单个订阅中创建所有内容并尝试在之后移动特定的 SQLDB 资源组。它不允许这样做(在门户中)

对于您的情况,我认为在一个公共订阅中创建所有服务,其中所有客户都可以轻松访问该位置。

您可以使用AzureSpeed从当前位置获取所有位置的延迟,并尝试在对所有客户端具有最小延迟的公共位置创建订阅。

于 2018-07-12T05:48:58.593 回答