创建、删除或更新租户虚拟网络
在本主题中,你将了解如何在部署软件定义网络 (SDN) 后创建、删除和更新 Hyper-V 网络虚拟化虚拟网络。 Hyper-V 网络虚拟化可帮助你隔离租户网络,以便每个租户网络都是一个单独的实体。 除非你配置公共访问工作负载,否则每个实体都没有交叉连接的可能性。
创建新的虚拟网络
为租户创建虚拟网络会将其置于 Hyper-V 主机上的唯一路由域中。 在每个虚拟网络下面,至少有一个虚拟子网。 虚拟子网由 IP 前缀定义,并引用先前定义的 ACL.
创建新虚拟网络的步骤如下:
- 标识要从中创建虚拟子网的 IP 地址前缀。
- 确定通过隧道传输租户流量的逻辑提供商网络。
- 为步骤 1 中确定的每个 IP 前缀至少创建一个虚拟子网。
- (可选)将以前创建的 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