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

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

先决条件

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

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

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

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

  • 最大长度为 63 个字符。

验证 ExpressRoute 线路

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

网络结构控制器的虚拟机 (VM) SKU 更新

通过最新更新,所有新的 NFC 群集部署都使用 Standard_D8s_v3 虚拟机 SKU,而不是 Standard_Ds4_v2。 由于多个 Azure 区域的可用性 Standard_Ds4_v2 有限,因此需要进行此更改。

注释

为了确保最佳性能和可伸缩性,必须为每个网络结构控制器(NFC)内所需的网络结构实例(NF)预配适当的节点池计数。 如果必要的节点池数量不可用,则必须提前提交配置请求。 根据当前配置(建议的 SKU:StandardDS4v2(8 个 vCPU、28 GiB 内存),名为 nfcCluster 的 AKS 群集的预期节点池缩放要求如下所示:

每个 NFC 的 NF 数 AKS 集群 nfc 集群所需的最小节点池数量
1 – 5 2
6 - 10 3
11 - 15 4

最低 vCPU 规格要求

新的 VM SKU“DSv3”至少需要 120 个 vCPU ,以确保最佳性能和资源可用性。

核查新 SKU 的虚拟机配额

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

  1. Azure 门户

    • 导航到 Azure 门户订阅

    • 转到 使用情况 + 配额

    • 搜索所需的 VM SKU“DSv3”

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

  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 后,下一步是创建 群集管理器