通过 PowerShell 使用虚拟网络对等互连连接虚拟网络
可以使用虚拟网络对等互连将虚拟网络互相连接。 将虚拟网络对等互连后,两个虚拟网络中的资源将能够以相同的延迟和带宽相互通信,就像这些资源位于同一个虚拟网络中一样。 在本文中,学习如何:
- 创建两个虚拟网络
- 使用虚拟网络对等互连连接两个虚拟网络。
- 将虚拟机 (VM) 部署到每个虚拟网络
- VM 之间进行通信
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
如果选择在本地安装和使用 PowerShell,则本文需要 Azure PowerShell 模块 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud
来创建与 Azure 的连接。
创建虚拟网络
创建虚拟网络之前,必须为虚拟网络创建资源组以及本文中创建的所有其他资源。 使用 New-AzResourceGroup 创建资源组。 以下示例在“chinaeast”位置创建名为“myResourceGroup”的资源组。
Connect-AzAccount -Environment AzureChinaCloud
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location chinaeast
使用 New-AzVirtualNetwork 创建虚拟网络。 以下示例创建地址前缀为 10.0.0.0/16 且名为 myVirtualNetwork1 的虚拟网络。
$virtualNetwork1 = New-AzVirtualNetwork `
-ResourceGroupName myResourceGroup `
-Location chinaeast`
-Name myVirtualNetwork1 `
-AddressPrefix 10.0.0.0/16
使用 Add-AzVirtualNetworkSubnetConfig 创建子网配置。 以下示例创建地址前缀为 10.0.0.0/24 的子网配置:
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
-Name Subnet1 `
-AddressPrefix 10.0.0.0/24 `
-VirtualNetwork $virtualNetwork1
使用 Set-AzVirtualNetwork 将子网配置写入虚拟网络,从而创建子网:
$virtualNetwork1 | Set-AzVirtualNetwork
创建地址前缀为 10.1.0.0/16 的虚拟网络和一个子网:
# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
-ResourceGroupName myResourceGroup `
-Location chinaeast`
-Name myVirtualNetwork2 `
-AddressPrefix 10.1.0.0/16
# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
-Name Subnet1 `
-AddressPrefix 10.1.0.0/24 `
-VirtualNetwork $virtualNetwork2
# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork
将虚拟网络对等互连
使用 Add-AzVirtualNetworkPeering 创建对等互连。 以下示例将 myVirtualNetwork1 对等互连到 myVirtualNetwork2。
Add-AzVirtualNetworkPeering `
-Name myVirtualNetwork1-myVirtualNetwork2 `
-VirtualNetwork $virtualNetwork1 `
-RemoteVirtualNetworkId $virtualNetwork2.Id
在上一个命令执行后返回的输出中,可以看到 PeeringState 为 Initiated。 对等互连将保持 Initiated 状态,直到你创建从 myVirtualNetwork2 到 myVirtualNetwork1 的对等互连。 创建从 myVirtualNetwork2 到 myVirtualNetwork1 的对等互连。
Add-AzVirtualNetworkPeering `
-Name myVirtualNetwork2-myVirtualNetwork1 `
-VirtualNetwork $virtualNetwork2 `
-RemoteVirtualNetworkId $virtualNetwork1.Id
在上一个命令执行后返回的输出中,可以看到 peeringState 为 Connected。 Azure 还将 myVirtualNetwork1-myVirtualNetwork2 对等互连的对等互连状态更改为 Connected。 使用 Get-AzVirtualNetworkPeering 确认 myVirtualNetwork1-myVirtualNetwork2 对等互连的对等互连状态是否已更改为“Connected”。
Get-AzVirtualNetworkPeering `
-ResourceGroupName myResourceGroup `
-VirtualNetworkName myVirtualNetwork1 `
| Select PeeringState
在两个虚拟网络中的对等互连的 PeeringState 为 Connected 之前,在一个虚拟网络中的资源无法与另一个虚拟网络中的资源通信。
创建虚拟机
在稍后的步骤中,会在每个虚拟网络中创建一个 VM,以便可以在它们之间进行通信。
创建第一个 VM
使用 New-AzVM 创建 VM。 以下示例在 myVirtualNetwork1 虚拟网络中创建一个名为 myVm1 的 VM。 -AsJob
选项会在后台创建 VM,因此可继续执行下一步。 系统提示时,请输入想要用来登录到 VM 的用户名和密码。
New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Location "China East" `
-VirtualNetworkName "myVirtualNetwork1" `
-SubnetName "Subnet1" `
-ImageName "Win2016Datacenter" `
-Name "myVm1" `
-AsJob
创建第二个 VM
New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Location "China East" `
-VirtualNetworkName "myVirtualNetwork2" `
-SubnetName "Subnet1" `
-ImageName "Win2016Datacenter" `
-Name "myVm2"
创建 VM 需要几分钟时间。 在 Azure 创建 VM 并将输出返回到 PowerShell 之前,不要继续执行后续步骤。
注意
Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。
发生以下事件之一时,将禁用默认出站访问 IP:
- 将公共 IP 地址分配给 VM。
- 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
- 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。
在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。
有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问,使用源网络地址转换(SNAT)进行出站连接。
VM 之间进行通信
可以从 Internet 连接到 VM 的公共 IP 地址。 使用 Get-AzPublicIpAddress 返回 VM 的公共 IP 地址。 以下示例返回 myVm1 VM 的公共 IP 地址:
Get-AzPublicIpAddress `
-Name myVm1 `
-ResourceGroupName myResourceGroup | Select IpAddress
从本地计算机使用以下命令创建与 myVm1 VM 的远程桌面会话。 将 <publicIpAddress>
替换为上一命令返回的 IP 地址。
mstsc /v:<publicIpAddress>
此时会创建远程桌面协议 (.rdp) 文件,并下载到计算机,同时打开该文件。 输入用户名和密码(可能需要选择“更多选择”,然后选择“使用其他帐户”,以便指定在创建 VM 时输入的凭据),然后单击“确定”。 你可能会在登录过程中收到证书警告。 单击“是”或“继续”继续进行连接。
在 myVm1 VM 上,允许 Internet 控制消息协议 (ICMP) 通过 Windows 防火墙,以便在稍后的步骤中使用 PowerShell 从 myVm2 ping 此 VM:
New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4
虽然本文中使用 ping 在 VM 之间进行通信,但在进行生产部署时,不建议允许 ICMP 通过 Windows 防火墙。
若要连接到 myVm2 VM,请在 myVm1 VM 上通过命令提示符输入以下命令:
mstsc /v:10.1.0.4
由于已在 myVm1 上启用了 ping,因此,现在可以在 myVm2 VM 上通过命令提示符按 IP 地址对它执行 ping 操作:
ping 10.0.0.4
会收到四条回复。 断开到 myVm1 和 myVm2 的 RDP 会话。
清理资源
如果不再需要资源组及其包含的所有资源,请使用 Remove-AzResourcegroup 将其删除。
Remove-AzResourceGroup -Name myResourceGroup -Force
后续步骤
在本文中,你已学习了如何使用虚拟网络对等互连来连接同一 Azure 区域中的两个网络。 还可以将不同受支持的区域、不同 Azure 订阅中的虚拟网络对等互连,并且可以使用对等互连创建中心辐射型网络设计。 若要详细了解虚拟网络对等互连,请参阅虚拟网络对等互连概述和管理虚拟网络对等互连。
可以通过 VPN 将自己的计算机连接到虚拟网络,并可与虚拟网络或对等虚拟网络中的资源进行交互。 有关用来完成虚拟网络文章中涉及的许多任务的可重用脚本,请参阅脚本示例。