通过 Azure CLI 使用虚拟网络对等互连连接虚拟网络
可以使用虚拟网络对等互连将虚拟网络互相连接。 将虚拟网络对等互连后,两个虚拟网络中的资源将能够以相同的延迟和带宽相互通信,就像这些资源位于同一个虚拟网络中一样。
在本文中,学习如何:
创建两个虚拟网络
使用虚拟网络对等互连连接两个虚拟网络。
将虚拟机 (VM) 部署到每个虚拟网络
VM 之间进行通信
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
先决条件
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
本文需要 Azure CLI 2.0.28 或更高版本。
注意
在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud
来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud
。
创建虚拟网络
创建虚拟网络之前,必须为虚拟网络创建资源组以及本文中创建的所有其他资源。 使用 az group create 创建资源组。 以下示例将在“chinaeast2”位置创建名为“test-rg”的资源组:
az group create \
--name test-rg \
--location chinaeast
使用 az network vnet create 创建虚拟网络。 以下示例使用地址前缀“10.0.0.0/16”创建一个名为“vnet-1”的虚拟网络。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
使用地址前缀“10.1.0.0/16”创建一个名为“vnet-2”的虚拟网络:
az network vnet create \
--name vnet-2 \
--resource-group test-rg \
--address-prefixes 10.1.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.1.0.0/24
将虚拟网络对等互连
对等互连是在虚拟网络 ID 之间建立的。 使用 az network vnet show 获取每个虚拟网络的 ID,并将 ID 存储在变量中。
# Get the id for vnet-1.
vNet1Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-1 \
--query id --out tsv)
# Get the id for vnet-2.
vNet2Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-2 \
--query id \
--out tsv)
使用 az network vnet peering create 创建从 vnet-1 到 vnet-2 的对等互连。 如果未指定 --allow-vnet-access
参数,将建立对等互连,但没有通信可以通过它进行。
az network vnet peering create \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--remote-vnet $vNet2Id \
--allow-vnet-access
在前一个命令执行后返回的输出中,可以看到 peeringState 为“已启动”。 对等互连将保持“Initiated”状态,直到创建从 vnet-2 到 vnet-1 的对等互连。 创建从 vnet-2 到 vnet-1 的对等互连。
az network vnet peering create \
--name vnet-2-to-vnet-1 \
--resource-group test-rg \
--vnet-name vnet-2 \
--remote-vnet $vNet1Id \
--allow-vnet-access
在前一个命令执行后返回的输出中,可以看到 peeringState 为“已连接”。 Azure 还将从 vnet-1 到 vnet-2 的对等互连的对等互连状态更改为“Connected”。 使用 az network vnet peering show 确认从 vnet-1 到 vnet-2 的对等互连的对等互连的对等互连状态是否已更改为“Connected”。
az network vnet peering show \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--query peeringState
在两个虚拟网络中的对等互连的“peeringState”为“Connected”之前,一个虚拟网络中的资源无法与另一个虚拟网络中的资源通信。
创建虚拟机
在稍后的步骤中,会在每个虚拟网络中创建一个 VM,以便可以在它们之间进行通信。
创建第一个 VM
使用 az vm create 创建 VM。 以下示例在 vnet-1 虚拟网络中创建一个名为“vm-1”的 VM。 如果默认密钥位置中尚不存在 SSH 密钥,该命令会创建它们。 若要使用特定的一组密钥,请使用 --ssh-key-value
选项。 --no-wait
选项会在后台创建 VM,因此可继续执行下一步。
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--generate-ssh-keys \
--no-wait
创建第二个 VM
在 vnet-2 虚拟网络中创建一个 VM。
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-2 \
--subnet subnet-1 \
--generate-ssh-keys
创建 VM 需要几分钟时间。 创建 VM 之后,Azure CLI 将显示类似于以下示例的信息:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
"location": "chinaeast",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "13.90.242.231",
"resourceGroup": "test-rg"
}
记下 publicIpAddress。 在后面的步骤中会使用此地址通过 Internet 访问 VM。
注意
Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。
发生以下事件之一时,将禁用默认出站访问 IP:
- 将公共 IP 地址分配给 VM。
- 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
- 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。
在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。
有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问,使用源网络地址转换(SNAT)进行出站连接。
VM 之间进行通信
使用以下命令来与 vnet-2 VM 建立 SSH 会话。 将 <publicIpAddress>
替换为 VM 的公共 IP 地址。 在前一示例中,公共 IP 地址为 13.90.242.231。
ssh <publicIpAddress>
Ping vnet-1 中的 VM。
ping 10.0.0.4 -c 4
会收到四条回复。
关闭与 vm-2 VM 的 SSH 会话。
清理资源
如果不再需要资源组及其包含的所有资源,可以使用 az group delete 将其删除。
az group delete \
--name test-rg \
--yes
后续步骤
在本文中,你已学习了如何使用虚拟网络对等互连来连接同一 Azure 区域中的两个网络。 还可以将不同受支持的区域、不同 Azure 订阅中的虚拟网络对等互连,并且可以使用对等互连创建中心辐射型网络设计。 若要详细了解虚拟网络对等互连,请参阅虚拟网络对等互连概述和管理虚拟网络对等互连。
可以通过 VPN 将自己的计算机连接到虚拟网络,并可与虚拟网络或对等虚拟网络中的资源进行交互。 有关用来完成虚拟网络文章中涉及的许多任务的可重用脚本,请参阅脚本示例。