你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

管理 Azure NetApp 文件的可用性区域卷放置

你可以在你选择的逻辑可用性区域中部署新卷。 还可以使用可用性区域信息填充现有卷。 要更好地了解可用性区域,请参阅使用可用性区域实现高可用性

要求和注意事项

重要

如果通过自定义角色或内置参与者 RBAC 角色使用可用性区域,请确保已设置相应的权限。 没有某些权限可能会导致 Azure 门户出现问题。 有关配置详细信息,请参阅配置自定义 RBAC 角色

  • 此功能不保证可用性区域中的可用容量。 例如,即使你可以在美国东部地区的可用性区域 3 内部署虚拟机,也不能保证该区域中有免费的 Azure NetApp 文件容量。 如果没有足够的可用容量,卷创建将失败。

  • 创建具有可用性区域的卷后,无法修改指定的可用性区域。 无法在可用性区域之间移动卷。

  • NetApp 帐户和容量池不受可用性区域的限制。 容量池可以包含不同可用性区域中的卷。

  • 此功能提供区域性卷放置,延迟在区域性延迟包络内。 此功能不提供接近计算的放置。 因此,不提供最低延迟保证。

  • 每个数据中心都被分配到一个物理区域。 物理区域映射到 Azure 订阅中的逻辑区域。 在创建订阅后,将自动为此映射分配 Azure 订阅。 此功能与订阅的通用逻辑到物理可用性区域映射保持一致。

  • VM 和 Azure NetApp 文件卷将在同一逻辑可用性区域内单独部署,以在 VM 和 Azure NetApp 文件之间创建区域对齐。 可用性区域卷放置功能不会在创建卷后创建分区虚拟机,反之亦然。

  • 对于不同可用性区域中的卷,Azure NetApp 文件支持创建具有相同文件路径 (NFS)、共享名称 (SMB) 或卷路径 (双协议) 的卷。 此功能目前以预览版提供。

    重要

    创建与其他可用性区域中的另一个卷具有相同文件路径的卷后,该卷与未启用此功能的订阅中部署的其他卷具有相同的支持级别。 例如,如果卷上的其他正式版功能(例如快照)存在问题,则支持此功能,因为问题与能够在其他可用性区域中创建具有相同文件路径的卷无关。

    首次使用此功能之前,你需要注册此功能。 注册后,即可在后台启用并使用该功能。 无需 UI 控件。

    1. 注册此功能:

      Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFFilePathUniquenessInAz
      
    2. 检查功能注册的状态:

      注意

      RegistrationState 可能会处于 Registering 状态长达 60 分钟,然后才更改为 Registered 状态。 请等到状态变为“已注册”后再继续。

      Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFFilePathUniquenessInAz
      

    此外,Azure CLI 命令 az feature registeraz feature show 分别可用于注册功能和显示注册状态。

重要

不建议对 Terraform 托管卷使用可用性区域。 如果这样做,则必须将区域属性添加到卷

创建具有可用性区域的卷

  1. 从容量池中选择“卷”。 然后选择“+ 添加卷”以创建卷。

    有关卷创建的详细信息,请参阅:

  2. 在“创建卷”页的“基本”选项卡下,选择“可用性区域”下拉菜单以指定存在 Azure NetApp 文件资源的可用性区域。

    重要

    不存在 Azure NetApp 文件的订阅的逻辑可用性区域将被标记为 (Unavailable) 并显示为灰色。

    显示可用性区域菜单的屏幕截图。

  3. 按照 UI 操作以创建卷。 “查看 + 创建”页面显示你指定的所选可用性区域。

    显示可用性区域查看的屏幕截图。

  4. 导航到“属性”以确认你的可用性区域配置。

    卷属性界面的屏幕截图。

使用可用性区域信息填充现有卷

  1. 导航到你要以可用性区域信息填充的卷。

  2. 选择“填充可用性区域”

  3. 此时会出现“填充可用性区域”窗口,并且会显示在其中部署 Azure NetApp 文件卷的可用性区域。

  4. 如果要将此可用性区域填充到卷,请选择“保存”,如果要将卷保留为区域性卷,请选择“取消”。

    重要

    可用性区域信息只能按提供的方式填充。 无法使用此功能选择可用性区域或将卷移动到另一个可用性区域。 如果要将此卷移动到另一个可用性区域,请考虑使用跨区域复制(在使用可用性区域信息填充卷后)。

    “填充可用性区域”窗口的屏幕截图。

填充 Terraform 托管卷的可用性区域

填充可用性区域功能需要卷上的 zone 属性。 只能在创建 Terraform 托管卷时设置区域属性,但在创建卷后无法对其进行修改。 在创建卷后添加 zone 属性时,如果指定的区域值与可用性区域不匹配,可能会导致数据丢失或卷丢失。

重要

为防止任何包含可变资源的 Azure 资源数据丢失,应使用prevent_destroy生命周期参数

  1. 导航到 Terraform 模块 terraform.tfstate 文件。 "zone" 属性应当是空字符串。

  2. 在 Terraform 托管卷的配置文件 (main.tf) 中,找到卷资源的生命周期配置块。 使用 ignore_changes = [zone] 修改该块。 如果生命周期配置块不存在,请添加它:

    lifecycle {
        ignore_changes = [zone]
    }
    
  3. 在 Azure 门户中找到 Terraform 托管卷。 在卷“概述”中,选择“填充可用性区域”并记下可用性区域。 请勿选择“保存”。

    “填充可用性区域”菜单的屏幕截图。

  4. 在卷的配置文件 (main.tf) 中添加 zone 的值,输入你在上一步中检索到的数值。 例如,如果卷的可用性区域为 1,请输入 zone = 1

  5. 保存文件。

  6. 返回到 Azure 门户。 选择“保存”以填充可用性区域。

  7. 运行 terraform plan 以确认不会对卷进行更改。 CLI 输出应显示:No changes. Your infrastructure matches the configuration.

  8. 运行 terraform apply 来应用更改。 应会看到与上一步相同的 CLI 输出。

如果需要删除卷并在其他可用性区域中重新创建该卷,请移除配置文件中的 ignore_changes = [zone] 行,然后运行 terraform plan,之后运行 terraform apply

配置自定义 RBAC 角色

如果使用的是自定义 RBAC 角色或内置参与者角色,并且要在 Azure 门户中管理可用性区域,则可能无法访问 Azure 门户中的网络功能和“可用性区域”选项。 要确保具有适当的访问权限,请添加 Microsoft.NetApp/locations/* 权限。 通配符包含以下权限:

  • Microsoft.NetApp/locations/{location}/checkNameAvailability
  • Microsoft.NetApp/locations/{location}/checkFilePathAvailability
  • Microsoft.NetApp/locations/{location}/checkQuotaAvailability
  • Microsoft.NetApp/locations/{location}/quotaLimits
  • Microsoft.NetApp/locations/{location}/quotaLimits/{quotaLimitName}
  • Microsoft.NetApp/locations/{location}/regionInfo
  • Microsoft.NetApp/locations/{location}/regionInfos
  • Microsoft.NetApp/locations/{location}/queryNetworkSiblingSet
  • Microsoft.NetApp/locations/{location}/updateNetworkSiblingSet

步骤

  1. 在 Azure NetApp 文件订阅中,选择“访问控制 (IAM)”

  2. 选择“角色”,然后选择要修改的自定义角色。 选择三个点 (...),然后选择“编辑”。

  3. 要更新自定义角色,请选择“JSON”。 修改 JSON 文件以包含位置通配符权限 (Microsoft.NetApp/locations/*)。 例如:

    {
    	"properties": {
    	    "roleName": ""
    	    "description": ""
    	    "assignableScopes": ["/subscription/<subscriptionID>"
            ],
    	},
    	"permissions": [
            {
        	    "actions": [
                	"Microsoft.NetApp/locations/*",
                	"Microsoft.NetApp/netAppAccounts/read",
                	"Microsoft.NetApp/netAppAccounts/renewCredentials/action",
                    "Microsoft.NetApp/netAppAccounts/capacityPools/read",
                ]
            }]
    }
    
  4. 选择“审阅 + 更新”

  5. 注销 Azure 帐户,然后重新登录以确认权限效果已保持,并且选项可见。

后续步骤