创建、删除或更新租户虚拟网络

在本主题中,你将了解如何在部署软件定义网络 (SDN) 后创建、删除和更新 Hyper-V 网络虚拟化虚拟网络。 Hyper-V 网络虚拟化可帮助你隔离租户网络,以便每个租户网络都是一个单独的实体。 除非你配置公共访问工作负载,否则每个实体都没有交叉连接的可能性。

创建新的虚拟网络

为租户创建虚拟网络会将其置于 Hyper-V 主机上的唯一路由域中。 在每个虚拟网络下面,至少有一个虚拟子网。 虚拟子网由 IP 前缀定义,并引用先前定义的 ACL.

创建新虚拟网络的步骤如下:

  1. 标识要从中创建虚拟子网的 IP 地址前缀。
  2. 确定通过隧道传输租户流量的逻辑提供商网络。
  3. 为步骤 1 中确定的每个 IP 前缀至少创建一个虚拟子网。
  4. (可选)将以前创建的 ACL 添加到虚拟子网或为租户添加网关连接。

下表包括两个虚构租户的示例子网 ID 和前缀。 租户 Fabrikam 有两个虚拟子网,而 Contoso 租户有三个虚拟子网。

租户名称 虚拟子网 ID 虚拟子网前缀
Fabrikam 5001 24.30.1.0/24
Fabrikam 5002 24.30.2.0/20
Contoso 6001 24.30.1.0/24
Contoso 6002 24.30.2.0/24
Contoso 6003 24.30.3.0/24

以下示例脚本使用从 NetworkController 模块导出的 Windows PowerShell 命令来创建 Contoso 的虚拟网络和一个子网:

import-module networkcontroller
$URI = "https://ncrest.contoso.local"

#Find the HNV Provider Logical Network

$logicalnetworks = Get-NetworkControllerLogicalNetwork -ConnectionUri $uri
foreach ($ln in $logicalnetworks) {
   if ($ln.Properties.NetworkVirtualizationEnabled -eq "True") {
      $HNVProviderLogicalNetwork = $ln
   }
}

#Find the Access Control List to user per virtual subnet

$acllist = Get-NetworkControllerAccessControlList -ConnectionUri $uri -ResourceId "AllowAll"

#Create the Virtual Subnet

$vsubnet = new-object Microsoft.Windows.NetworkController.VirtualSubnet
$vsubnet.ResourceId = "Contoso_WebTier"
$vsubnet.Properties = new-object Microsoft.Windows.NetworkController.VirtualSubnetProperties
$vsubnet.Properties.AccessControlList = $acllist
$vsubnet.Properties.AddressPrefix = "24.30.1.0/24"

#Create the Virtual Network

$vnetproperties = new-object Microsoft.Windows.NetworkController.VirtualNetworkProperties
$vnetproperties.AddressSpace = new-object Microsoft.Windows.NetworkController.AddressSpace
$vnetproperties.AddressSpace.AddressPrefixes = @("24.30.1.0/24")
$vnetproperties.LogicalNetwork = $HNVProviderLogicalNetwork
$vnetproperties.Subnets = @($vsubnet)
New-NetworkControllerVirtualNetwork -ResourceId "Contoso_VNet1" -ConnectionUri $uri -Properties $vnetproperties

修改现有虚拟网络

可以使用 Windows PowerShell 更新现有的虚拟子网或网络。

运行以下示例脚本时,更新的资源只是放到具有相同资源 ID 的网络控制器中。 如果租户 Contoso 要向其虚拟网络添加新的虚拟子网(24.3 0.2.0/24),你或 Contoso 管理员可以使用以下脚本。

$acllist = Get-NetworkControllerAccessControlList -ConnectionUri $uri -ResourceId "AllowAll"

$vnet = Get-NetworkControllerVirtualNetwork -ResourceId "Contoso_VNet1" -ConnectionUri $uri

$vnet.properties.AddressSpace.AddressPrefixes += "24.30.2.0/24"

$vsubnet = new-object Microsoft.Windows.NetworkController.VirtualSubnet
$vsubnet.ResourceId = "Contoso_DBTier"
$vsubnet.Properties = new-object Microsoft.Windows.NetworkController.VirtualSubnetProperties
$vsubnet.Properties.AccessControlList = $acllist
$vsubnet.Properties.AddressPrefix = "24.30.2.0/24"

$vnet.properties.Subnets += $vsubnet

New-NetworkControllerVirtualNetwork -ResourceId "Contoso_VNet1" -ConnectionUri $uri -properties $vnet.properties

删除虚拟网络

可以使用 Windows PowerShell 删除虚拟网络。

以下 Windows PowerShell 示例通过向资源 ID 的 URI 发出 HTTP DELETE 来删除租户虚拟网络。

Remove-NetworkControllerVirtualNetwork -ResourceId "Contoso_Vnet1" -ConnectionUri $uri