你当前正在访问 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

选择部署了 Virtual Network Manager 的订阅:

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

更新适用于 Azure CLI 的 Virtual Network Manager 扩展:

az extension update --name virtual-network-manager

创建资源组

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

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

创建 Virtual Network Manager 实例

在此任务中,定义此 Virtual Network Manager 实例的范围和访问类型。 使用 az network manager create 创建作用域。 将值 <subscriptionID> 替换为希望 Virtual Network Manager 为其管理虚拟网络的订阅。 将 <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 创建三个虚拟网络。 本示例在(美国)西部 2 位置创建名为 three virtual 的虚拟网络。 每个虚拟网络都带有一个用于动态成员身份的 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"

为网格配置定义成员身份

通过 Azure Virtual Network Manager,可以使用两种方法将成员身份添加到网络组。 静态成员身份涉及手动添加虚拟网络,动态成员身份涉及使用 Azure Policy 根据条件动态添加虚拟网络。 选择要为网格配置成员身份完成的选项。

凭借静态成员身份,可通过 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"

后续步骤

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