我想使用 Azure 在单个
ResourceGroup
下为客户创建环境,包括:
理想情况下,数据库将托管在属于不同资源组的服务器上,这样我就可以跨多个客户端利用弹性池。
当我尝试使用
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 部分属于不同的资源组?
目前还不可能将 SQLServer 与一个订阅(位置)及其数据库分离到另一个订阅。
在 MSDN 论坛
查看类似的问题Azure 资源组也被定义为强大的容器 它的资源,定义了它们的身份(查看所有的 URI Azure 资源),以及基于角色的访问权限的传播,以及 控制资源生命周期 - 从而授予对资源组的访问权限 授予对其资源的权限并删除资源组 它所包含的资源。
结合上面的意思就是包含一个资源组 服务器还必须包含托管/嵌套在该服务器上的数据库。
即使您尝试在单个订阅中创建所有内容并尝试在之后移动特定的 SQLDB 资源组。它不允许这样做(在门户中)
对于您的情况,我认为在公共订阅中创建所有服务,其中位置是公共的或所有客户端都可以轻松访问。
您可以使用 AzureSpeed 从当前位置获取所有位置的延迟,并尝试在对所有客户端具有最小延迟的公共位置中创建订阅。
如果有人像我 5 年后一样偶然发现这个问题,答案是,是的,数据库和服务器可以位于同一订阅的不同资源组中,并且仍然可以相互通信。
您也可以看看这两个问题和答案: