使用 Azure CLI 创建和修改网络结构控制器

本文介绍如何使用 Azure 命令行接口(AzureCLI)创建网络结构控制器(NFC)。 本文档还演示如何检查状态或删除网络结构控制器。

先决条件

在配置 NFC 之前,请确保满足以下要求:

  • 资源名称必须以字母(大写或小写)开头。

  • 仅允许字母、数字和连字符。

  • 不允许使用下划线(_)和其他特殊字符。

  • 最大长度为 63 个字符。

验证 ExpressRoute 线路

验证 ExpressRoute 线路是否正确连接(CircuitID)(AuthID):如果连接不正确,NFC 预配将失败。

网络结构控制中心的虚拟机(VM)产品规格信息

所有新的 NFC 群集部署都使用 Standard_D8s_v3 虚拟机 SKU。 为了保持可靠性和确保不间断的服务,NFC 体系结构中的所有基础群集都会部署,以确保跨所有可用性区域实现区域冗余。

上述体系结构在三个单独的区域中以智能方式分配工作负荷。 NFC 最多需要六个节点,并且是使用所有可用性区域创建的。 如果Standard_D8s_v3 SKU 在所有区域中不可用,客户可以切换到两个可用性区域。 发生区域故障时,剩余区域将继续处理流量,最大限度地减少中断风险和支持业务连续性。

最低 vCPU 规格要求

Standard_D8s_v3至少需要 128 个 vCPU(从 NNF 10.0 开始),以确保最佳性能和资源可用性。

核查新 SKU 的虚拟机配额

若要检查订阅是否有足够的 vCPU 配额用于Standard_D8s_v3,请执行以下步骤:

  1. Azure 门户

    • 导航到 Azure 门户订阅

    • 转到 使用情况 + 配额

    • 搜索所需的 VM SKU Standard_D8s_v3

    • 检查 总配额当前使用情况

  2. Azure CLI

    运行以下命令来检查可用配额:

       az vm list-usage --location <region> --output table
    

查找 vCPU 配额并确保它满足最低要求。

请求更多 vCPU 配额

如果配额不足,请通过以下方式请求增加:

  • 通过 Azure 门户 提交配额增加请求→ 帮助 + 支持新的支持请求

  • 选择 “配额 ”作为问题类型并指定所需的增加

注释

在继续部署之前,请确保已批准配额请求。

创建网络结构控制器

必须先创建资源组,然后才能创建 NFC。

注释

应为每个 NFC 创建单独的资源组。

通过运行以下命令创建资源组:

az group create -n NFCResourceGroupName -l "<Location>"

用于 NFC 创建的属性

参数 Description values Example 必选 类型
资源组 资源组是用于保存 Azure 解决方案相关资源的容器。 NFCResourceGroupName XYZNFCResourceGroupName True String
位置 Azure 区域是部署时必需的。 eastus、westus3、southcentralus、eastus2euap eastus True String
资源名称 资源名称是网络结构控制器的名称。 NFC名称 XYZnfcname True String
IPv4地址空间 IPv4 网络结构控制器地址空间,默认子网块为 10.0.0.0/19,也不应与任何 ExpressRoute IP 重叠 10.0.0.0/19 10.0.0.0/19 不需要 String
IPv6 地址空间 IPv6 网络结构控制器地址空间,此参数默认为 FC00::/59,允许的范围/59 “FC00::/59” “FC00::/59” 不需要 String
Express Route 线路 ExpressRoute 线路是一个专用的 10G 链接,用于连接 Azure 和本地。 你需要知道 ExpressRoute 线路 ID 和身份验证密钥,才可以成功预配 NFC。 有两条 Express Route 线路,一条用于基础结构服务,另一条用于工作负荷(租户)服务 --infra-er-connections '[{“expressRouteCircuitId”: “xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx”, “expressRouteAuthorizationKey”: “xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx”}]'

--workload-er-connections '[{“expressRouteCircuitId”:“xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx”,“expressRouteAuthorizationKey”:“xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx”}]'
subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01“, ”expressRouteAuthorizationKey“: ”xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx“}] True 字符串
托管资源组 托管资源组配置属性。 NFC管理资源组名称 XYZNFCManagedResourceGroupName True String

下面是如何使用 Azure CLI 创建 NFC 的示例。 有关详细信息,请参阅 “属性”部分

az networkfabric controller create \
  --resource-group "NFCResourceGroupName" \
  --location "<Location>"  \
  --resource-name "nfcname" \
  --ipv4-address-space "10.0.0.0/19" \
  --ipv6-address-space "FC00::/59" \
  --infra-er-connections '[{"expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01", "expressRouteAuthorizationKey": "<auth-key>"}]'
  --workload-er-connections '[{"expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01"", "expressRouteAuthorizationKey": "<auth-key>"}]' \
--debug --no-wait

注释

NFC 创建需要 30-45 分钟。
> 使用 show 命令监视 NFC 创建进度。
可以看到不同的预配状态,例如“已接受”、“更新”和“成功/失败”。
> 如果创建失败,Failed请删除并重新创建 NFC。

预期输出仅在通过 AzureCLI 执行时立即显示为运行中

预期输出:

 {
  "id": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/NFCResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/nfcname",
  "infrastructureExpressRouteConnections": [
    {
      "expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-02"
    }
  ],
  "infrastructureServices": {
    "ipv4AddressSpaces": [
      "10.0.0.0/21"
    ],
    "ipv6AddressSpaces": []
  },
  "ipv4AddressSpace": "10.0.0.0/19",
  "ipv6AddressSpace": "FC00::/59",
  "isWorkloadManagementNetworkEnabled": "True",
  "location": "<Location>",
  "managedResourceGroupConfiguration": {},
  "name": "NFCName",
  "provisioningState": "Succeeded",
  "resourceGroup": "NFCResourceGroupName",
  "systemData": {
    "createdAt": "2023XX-XXT18:59:41.7805324Z",
    "createdBy": "email@address.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-XX-XXT09:50:27.4598499Z",
    "lastModifiedBy": "d1bd24c7-b27f-477e-86dd-939e107873d7",
    "lastModifiedByType": "Application"
  },
  "type": "microsoft.managednetworkfabric/networkfabriccontrollers",
  "workloadExpressRouteConnections": [
    {
      "expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx//resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-03"
    }
  ],
  "workloadManagementNetwork": true,
  "workloadServices": {
    "ipv4AddressSpaces": [
      "10.0.28.0/22"
    ],
    "ipv6AddressSpaces": []
  }
}

获取网络结构控制器

  az networkfabric controller show --resource-group "NFCResourceGroupName" --resource-name "nfcname"

预期输出:

{
  "id": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/NFCResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/nfcname",
  "infrastructureExpressRouteConnections": [
    {
      "expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-02"
    }
  ],
  "infrastructureServices": {
    "ipv4AddressSpaces": [
      "10.0.0.0/21"
    ],
    "ipv6AddressSpaces": []
  },
  "ipv4AddressSpace": "10.0.0.0/19",
  "ipv6AddressSpace": "FC00::/59",
  "isWorkloadManagementNetworkEnabled": "True",
  "location": "<Location>",
  "managedResourceGroupConfiguration": {},
  "name": "NFCName",
  "provisioningState": "Succeeded",
  "resourceGroup": "NFCResourceGroupName",
  "systemData": {
    "createdAt": "2023XX-XXT18:59:41.7805324Z",
    "createdBy": "email@address.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-XX-XXT09:50:27.4598499Z",
    "lastModifiedBy": "d1bd24c7-b27f-477e-86dd-939e107873d7",
    "lastModifiedByType": "Application"
  },
  "type": "microsoft.managednetworkfabric/networkfabriccontrollers",
  "workloadExpressRouteConnections": [
    {
      "expressRouteCircuitId": "/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx//resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-03"
    }
  ],
  "workloadManagementNetwork": true,
  "workloadServices": {
    "ipv4AddressSpaces": [
      "10.0.28.0/22"
    ],
    "ipv6AddressSpaces": []
  }
}

更新网络结构控制器

Network Fabric 控制器中的 PATCH 功能使用户能够毫不费力地添加或替换其他 Express Route 线路。 此功能在失败或潜在迁移事件期间特别有用。 在这种情况下,网络操作员可以通过添加或删除 ExpressRoute 专线和密钥来灵活地修改活动的网络结构控制器,同时确保操作不受影响。

注释

启动更新命令时,提供在创建过程中提供的所有参数至关重要。 这是因为 update 命令将覆盖现有内容,因此需要包含所有相关参数,以确保全面和准确的修改。

az networkfabric controller update \ 
  --resource-group "NFCResourceGroupName" \ 
  --location "<Location>"  \ 
  --resource-name "nfcname" \ 
  --ipv4-address-space "10.0.0.0/19" \ 
  --infra-er-connections '[{"expressRouteCircuitId":"/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01", "expressRouteAuthorizationKey": "<auth-key>"}]' 
  --workload-er-connections '[{"expressRouteCircuitId":"/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01"", "expressRouteAuthorizationKey": "<auth-key>"}]' 

注释

运行 az networkfabric controller show 以检索有关网络结构控制器的信息。

使用多个 ExpressRoute 电路更新网络架构控制器。

az networkfabric controller update \ 
 --resource-group "NFCResourceGroupName" \ 
 --location "eastus"  \ 
 --resource-name "nfcname" \ 
 --ipv4-address-space "10.0.0.0/19" \ 
--infra-er-connections "[{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-01',expressRouteAuthorizationKey:'<auth-key>'},{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-02',expressRouteAuthorizationKey:'<auth-key>'}]"
--workload-er-connections "[{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-03',expressRouteAuthorizationKey:'<auth-key>'},{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-04',expressRouteAuthorizationKey:'<auth-key>'}]"
命令 说明
az networkfabric controller update 用于更新 Azure 中现有网络结构控制器的命令
参数 说明 示例值
--resource-group 指定网络结构控制器所在的资源组。 "NFCResourceGroupName"
--location 指定部署网络结构控制器的 Azure 区域。 "eastus"
--resource-name 要更新的网络结构控制器资源的名称。 "nfcname"
--ipv4-address-space 定义网络构造控制器的 IPv4 地址空间。 "10.0.0.0/19"
--infra-er-connections 以 JSON 数组格式指定基础结构 ExpressRoute 连接。 "[{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-11',expressRouteAuthorizationKey:'<auth-key>'},{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-13',expressRouteAuthorizationKey:'<auth-key>'}]"
--workload-er-connections 以 JSON 数组格式指定 ExpressRoute 连接的工作负荷。 "[{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-11',expressRouteAuthorizationKey:'<auth-key>'},{expressRouteCircuitId:'/subscriptions/xxxxxx-xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/ER-Dedicated-WUS2-AFO-Circuits/providers/Microsoft.Network/expressRouteCircuits/MSFT-ER-Dedicated-PvtPeering-WestUS2-AFO-Ckt-12',expressRouteAuthorizationKey:'<auth-key>'}]"

注释

将占位符替换为"NFCResourceGroupName""nfcname""<auth-key>"与设置相关的实际值。

删除网络结构控制器

只有在删除所有关联的网络结构后,才应删除 NFC。

  az networkfabric controller delete --resource-group "NFCResourceGroupName" --resource-name "nfcname"

预期输出:

"name": "nfcname",
    "networkFabricIds": [],
    "operationalState": null,
    "provisioningState": "succeeded",
    "resourceGroup": "NFCResourceGroupName",
    "systemData": {
      "createdAt": "2022-10-31T10:47:08.072025+00:00",

注释

删除 NFC 需要 30 分钟。 在 Azure 门户中,验证托管资源是否已删除。

后续步骤

成功创建 NFC 后,下一步是创建 群集管理器