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

快速入门:使用 Azure CLI 通过 Azure Virtual Network Manager 创建网格网络拓扑

在 Azure CLI 中开始使用 Azure Virtual Network Manager 管理所有虚拟网络的连接。

在本快速入门中,你将部署三个虚拟网络,并使用 Azure Virtual Network Manager 创建网格网络拓扑。 然后验证是否应用了连接配置。

该示意图显示了使用 Azure Virtual Network Manager 为网状虚拟网络拓扑部署的资源。

先决条件

登录到 Azure 帐户,然后选择订阅

要开始配置,请登录到 Azure 帐户。 如果使用 Cloud Shell“试用”功能,你将自动登录。

az login

选择已部署 虚拟网络管理器 的订阅:

az account set \
    --subscription "<subscriptionID>"

更新适用于 Azure CLI 的 虚拟网络管理器 扩展:

az extension update --name virtual-network-manager

创建资源组

在此任务中,你将使用 az group create 创建资源组来托管网络管理器实例。 此示例在 (美国)西部 2 位置创建一个名为 resource-group 的资源组:

az group create \
    --name "resource-group" \
    --location "westus2"

创建 虚拟网络管理器 实例

在此任务中,定义此 虚拟网络管理器 实例的范围和访问类型。 使用 az network manager create 创建作用域。 将值 <subscriptionID> 替换为你希望由 虚拟网络管理器 管理其虚拟网络的订阅。 将 <mgName\> 替换为要管理的管理组。

az network manager create \
    --location "westus2" \
    --name "network-manager" \
    --resource-group "resource-group" \
    --scope-accesses "Connectivity" "SecurityAdmin" \
    --network-manager-scopes subscriptions="/subscriptions/<subscriptionID>"

创建网络组

在此任务中,使用 az network manager group create 创建网络组:

az network manager group create \
    --name "network-group" \
    --network-manager-name "network-manager" \
    --resource-group "resource-group" \
    --description "Network Group for Production virtual networks"

创建虚拟网络

在此任务中,使用 az network vnet create 创建三个虚拟网络。 该示例在 (美国)West 2 位置创建了三个虚拟网络。 每个虚拟网络都带有一个用于动态成员身份的 NetworkType 标记。 如果你已经有虚拟网络想创建网状网络,可以跳到下一节。

az network vnet create \
    --name "vnet-00" \
    --resource-group "resource-group" \
    --address-prefix "10.0.0.0/16" \
    --tags "NetworkType=Prod"

az network vnet create \
    --name "vnet-01" \
    --resource-group "resource-group" \
    --address-prefix "10.1.0.0/16" \
    --tags "NetworkType=Prod"

az network vnet create \
    --name "vnet-02" \
    --resource-group "resource-group" \
    --address-prefix "10.2.0.0/16" \
    --tags "NetworkType=Prod"

将一个子网添加到每个虚拟网络

在此任务中,向每个虚拟网络添加一个 /24 子网以完成虚拟网络的配置。 使用 az network vnet subnet create 创建名为 default 的子网配置:

az network vnet subnet create \
    --name "default" \
    --resource-group "resource-group" \
    --vnet-name "vnet-00" \
    --address-prefix "10.0.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "resource-group" \
    --vnet-name "vnet-01" \
    --address-prefix "10.1.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "resource-group" \
    --vnet-name "vnet-02" \
    --address-prefix "10.2.0.0/24"

为网格配置定义成员身份

为您的网格配置成员选择 静态成员 制或 动态成员制

通过静态成员身份,可使用 az network manager group static-member create 手动将三个用于网格配置的虚拟网络添加到网络组中。 将 <subscriptionID> 替换为创建这些虚拟网络时所用的订阅。

az network manager group static-member create \
    --name "vnet-00" \
    --network-group "network-group" \
    --network-manager "network-manager" \
    --resource-group "resource-group" \
    --resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-00"
az network manager group static-member create \
    --name "vnet-01" \
    --network-group "network-group" \
    --network-manager "network-manager" \
    --resource-group "resource-group" \
    --resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-01"
az network manager group static-member create \
    --name "vnet-02" \
    --network-group "network-group" \
    --network-manager "network-manager" \
    --resource-group "resource-group" \
    --resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-02"

创建配置

在此任务中,使用 az network manager connect-config create 创建网格网络拓扑配置。 将 <subscriptionID> 替换为订阅 ID。

az network manager connect-config create \
    --configuration-name "connectivityconfig" \
    --description "Production Mesh Connectivity Config Example" \
    --applies-to-groups '[{"networkGroupId": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group", "groupConnectivity": "None"}]' \
    --connectivity-topology "Mesh" \
    --network-manager-name "network-manager" \
    --resource-group "resource-group"

确认部署

要使配置生效,可使用 az network manager post-commit 将配置提交到目标区域:

az network manager post-commit \
    --network-manager-name "network-manager" \
    --commit-type "Connectivity" \
    --configuration-ids "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/connectivityConfigurations/connectivityconfig" \
    --target-locations "westus2" \
    --resource-group "resource-group"

验证配置

在使用 az network manager list-effective-connectivity-config时,虚拟网络将会显示应用于它们的配置:

az network manager list-effective-connectivity-config \
    --resource-group "resource-group" \
    --virtual-network-name "vnet-00"

az network manager list-effective-connectivity-config \
    --resource-group "resource-group" \
    --virtual-network-name "vnet-01"


az network manager list-effective-connectivity-config \
    --resource-group "resource-group" \
    --virtual-network-name "vnet-02"

对于属于连接配置的虚拟网络,你将收到类似于以下示例的输出:

{
  "skipToken": "",
  "value": [
    {
      "appliesToGroups": [
        {
          "groupConnectivity": "None",
          "isGlobal": "False",
          "networkGroupId": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group",
          "useHubGateway": "False"
        }
      ],
      "configurationGroups": [
        {
          "description": "Network Group for Production virtual networks",
          "id": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group",
          "provisioningState": "Succeeded",
          "resourceGroup": "resource-group"
        }
      ],
      "connectivityTopology": "Mesh",
      "deleteExistingPeering": "False",
      "description": "Production Mesh Connectivity Config Example",
      "hubs": [],
      "id": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/connectivityConfigurations/connectivityconfig",
      "isGlobal": "False",
      "provisioningState": "Succeeded",
      "resourceGroup": "resource-group"
    }
  ]
}

清理资源

如果不再需要 Azure Virtual Network Manager 实例和其他资源,请使用 az group delete 删除资源组:

az group delete \
    --name "resource-group"

后续步骤

在此步骤中,了解如何使用安全管理员配置阻止网络流量: