为啥 Azure 资源组与特定区域相关联?

Posted

技术标签:

【中文标题】为啥 Azure 资源组与特定区域相关联?【英文标题】:Why are Azure Resource Groups associated with a specific region?为什么 Azure 资源组与特定区域相关联? 【发布时间】:2015-12-01 02:31:39 【问题描述】:

我是 Azure 架构的新手,我想了解为什么 Azure 资源组(在 Azure 上构建的应用程序的逻辑部署存储桶)在定义时与区域相关联。

起初我以为是为灾难恢复或地理冗余提供全球分布,但后来我意识到单个资源组可以包含不同区域的 Web 应用程序,它可以通过流量管理器提供这些功能。我想使用单独的资源组将有助于更好地识别哪些资源位于哪个区域,但除了出于组织目的之外,我无法理解资源组的区域定义意味着什么。

(编辑:删除一般建议查询以更加集中)

【问题讨论】:

【参考方案1】:

指定资源组位置的主要原因是为要存储的部署指定数据/元数据的位置...它还使 API 保持一致(想想 REST API 调用中的路径)但是主要原因是部署期间的存储。

组中资源的位置与组本身的位置无关/无关。

【讨论】:

您能否进一步扩展“部署期间的存储”?这听起来像是移动位,在构建新的基础设施时似乎是值得考虑的事情。 它更像是部署的“元数据”。例如,json 文件本身是在部署期间存储的。如果您有类似自定义 vm 映像的东西,它是 VM 部署的一部分,它与 RG 一起存储。 啊,所以资源组本质上与部署模板相关联。 从技术上讲,RG 具有“部署”——这些可能是模板(一个或多个不同的模板),或者您可以手动创建资源(PowerShell、REST)。最后,它只是您想要作为一个组进行管理的元数据和任意资源分组。 如果您有一个 ARM 模板,其区域 A 中的 RG 包含区域 B 中的资源,而区域 A 由于某种原因不可用。如果部署模板,会不会失败?【参考方案2】:

创建资源组时,您需要提供该资源组的位置。您可能想知道,“为什么资源组需要一个位置?而且,如果资源可以具有与资源组不同的位置,为什么资源组位置很重要?”资源组存储有关资源的元数据。因此,当您指定资源组的位置时,您就是在指定存储元数据的位置。出于合规性原因,您可能需要确保您的数据存储在特定区域。

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview

【讨论】:

【参考方案3】:

Azure 资源组的元数据(定义)需要存储在某处。因此位置。但是,资源组内的资源与位置无关,可以放置在不同的区域\位置。 请注意,资源之间可能存在依赖关系。西欧的虚拟机显然也需要西欧的存储帐户,但同一资源组中的 SQL 数据库可以存在于美国西部。

【讨论】:

那么可以肯定地说,资源组区域确实没有没有任何意义吗?也就是说 - 如果 MS 在您创建新区域时决定在后端指定区域,而最终用户隐藏它,那么不会有任何损失? 正确(如果我理解为:如果资源组是在美国西部或欧盟北部或任何地区创建的,则没有区别)。你说的“对最终用户隐藏”是什么意思?顺便说一句,为什么 MS 会更改您的任何资源组的位置?可以假设 MS 无法访问您订阅中的数据 我也有同样的问题。顺便说一句,让它对最终用户隐藏 - 屏幕可以只询问资源组名称和订阅(因为提供位置没有任何意义,Azure 可以在后台为我们做些什么)有什么想法吗?【参考方案4】:

资源组基本上是由您决定要一起管理应用程序中的哪些资源,管理是指您希望将它们作为一个组进行部署、管理和监视,因此在较高级别上您不会将它们视为单独的组件。

一般而言,在大型生态系统中,Azure 资源组是您不会将其中的那些组件(资源)视为单独实体的资源组,而是将它们视为单个实体的相关和相互依赖的部分,因此您可以将它们放入一个资源组,以便使用 Azure 资源组管理器工具,您可以在单个协调操作中部署、更新或删除应用程序的所有资源。

您使用模板进行部署,并且该模板可以适用于不同的环境,例如测试、登台和生产。您可以通过查看整个组的累计成本来明确您的组织的帐单。

您可以在此处找到有关 Azure 资源管理器的更多详细信息,我相信这将有助于您更好地理解 Azure 资源组背后的理念:

https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/

【讨论】:

对,这是对它们用途的一个很好的总结。我最初的问题是为什么在创建它们时必须将它们分配给特定区域。它要求的三项信息是名称、订阅和地区。 资源中的位置表示要用于资源的 Azure 数据中心。我猜您希望资源组中的所有资源都位于一个数据中心位置... 我投了反对票,因为我有同样的问题/想法,这个答案提供了资源组的摘要,但没有回答问题,有 2 次。我很感激这是 5 岁。【参考方案5】:

Azure 中的所有内容都与物理位置/数据中心相关,ARM 也不例外。前段时间,并不是每个数据中心都支持 ARM,所以选择的原因就更有意义了。现在,与任何其他 Azure 资源一样,由用户做出决定,通常基于他们与最终用户的距离和/或法定地理要求。

【讨论】:

对,但是对于资源组来说,除了“使其匹配”特定部署的主要资源之外,还有什么会推动该决策?它似乎只是元数据,对内部资源的分配没有直接影响。 我怀疑这个想法是提供类似于 Affinity Groups(和旧的 IaaS v1 功能)的功能,它在地理上(和物理上)试图将项目组合在一起以提高性能。资源组不像这样在地理上绑定,但它们确实允许您创建一堆资源而无需指定每个区域;除非提供替代方案,否则有效地提供默认位置。 还有一点需要思考的是,这是在事后考虑的最合乎逻辑的方式。【参考方案6】:

似乎没有明显的方法可以确定资源组在创建后位于哪个区域。当我遇到 CDN 元数据冲突问题时,这让我很伤心。我不得不重新开始。现在我用区域命名我的资源组。例如:my-resourcegroup-westus

【讨论】:

所有 Azure API 都提供此信息。例如,尝试使用 Azure CLI:az group list Azure 门户现在显示此信息。导航到“资源组”。点击“编辑列”,您可以选择显示“位置”(例如“美国中南部”)和“位置 ID”(例如“southcentralus”)。

以上是关于为啥 Azure 资源组与特定区域相关联?的主要内容,如果未能解决你的问题,请参考以下文章

AZure账号-订阅-租户

未强制执行 Azure 策略

SQL审核平台 Archery 之简单使用篇

如何在与 Azure Active Directory 关联的 Azure SQL 数据库级别创建不同的资源组

Azure 策略 - 拒绝使用特定标记创建资源

Spring Security + Keycloak 授权:如何将端点与资源相关联?