Подключение виртуальных сетей с помощью пиринговой связи с использованием Azure CLIConnect virtual networks with virtual network peering using the Azure CLI

Виртуальные сети можно подключить друг к другу с помощью пиринговой связи.You can connect virtual networks to each other with virtual network peering. После установки пиринговой связи ресурсы в обеих виртуальных сетях могут взаимодействовать друг с другом с такой же задержкой и пропускной способностью, как если бы эти ресурсы находились в одной виртуальной сети.Once virtual networks are peered, resources in both virtual networks are able to communicate with each other, with the same latency and bandwidth as if the resources were in the same virtual network. В этой статье раскрываются следующие темы:In this article, you learn how to:

  • создание двух виртуальных сетей;Create two virtual networks
  • соединение двух виртуальных сетей с помощью пиринговой связи;Connect two virtual networks with a virtual network peering
  • развертывание виртуальной машины в каждой из виртуальных сетей;Deploy a virtual machine (VM) into each virtual network
  • Взаимодействие между виртуальными машинамиCommunicate between VMs

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don't have an Azure subscription, create a free account before you begin.

Использование Azure Cloud ShellUse Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Для работы со службами Azure в Cloud Shell можно использовать bash и PowerShell.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Чтобы запустить Azure Cloud Shell, сделайте вот что:To launch Azure Cloud Shell:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически.Selecting Try It doesn't automatically copy the code to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell, чтобы открыть Cloud Shell в браузере.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Запуск Cloud Shell в новом окнеLaunch Cloud Shell in a new window
На портале Azure в правом верхнем углу в строке меню нажмите кнопку Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Кнопка "Cloud Shell" на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, сделайте вот что:To run the code in this article in Azure Cloud Shell:

  1. Запустите Cloud Shell.Launch Cloud Shell.

  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.Select the Copy button on a code block to copy the code.

  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши Ctrl+Shift+V в Windows и Linux или Cmd+Shift+V в macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Нажмите клавишу ВВОД, чтобы выполнить код.Press Enter to run the code.

Если вы решили установить и использовать интерфейс командной строки локально, для работы с этой статьей вам понадобится Azure CLI 2.0.28 или более поздней версии.If you choose to install and use the CLI locally, this article requires that you are running the Azure CLI version 2.0.28 or later. Чтобы узнать версию, выполните команду az --version.To find the version, run az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI.

Создание виртуальных сетейCreate virtual networks

Перед созданием виртуальной сети необходимо создать для нее группу ресурсов и другие компоненты, указанные в этой статье.Before creating a virtual network, you have to create a resource group for the virtual network, and all other resources created in this article. Создайте группу ресурсов с помощью команды az group create.Create a resource group with az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.The following example creates a resource group named myResourceGroup in the eastus location.

az group create --name myResourceGroup --location eastus

Создайте виртуальную сеть с помощью команды az network vnet create.Create a virtual network with az network vnet create. В следующем примере создается виртуальная сеть с именем myVirtualNetwork1 и префиксом адреса 10.0.0.0/16.The following example creates a virtual network named myVirtualNetwork1 with the address prefix 10.0.0.0/16.

az network vnet create \
  --name myVirtualNetwork1 \
  --resource-group myResourceGroup \
  --address-prefixes 10.0.0.0/16 \
  --subnet-name Subnet1 \
  --subnet-prefix 10.0.0.0/24

Создайте виртуальную сеть с именем myVirtualNetwork2 и префиксом адресов 10.1.0.0/16:Create a virtual network named myVirtualNetwork2 with the address prefix 10.1.0.0/16:

az network vnet create \
  --name myVirtualNetwork2 \
  --resource-group myResourceGroup \
  --address-prefixes 10.1.0.0/16 \
  --subnet-name Subnet1 \
  --subnet-prefix 10.1.0.0/24

Установка пиринговой связи между виртуальными сетямиPeer virtual networks

Пиринговая связь настраивается по идентификаторам виртуальных сетей, а значит вам нужно получить идентификаторы обеих виртуальных сетей с помощью команды az network vnet show и сохранить их в переменных.Peerings are established between virtual network IDs, so you must first get the ID of each virtual network with az network vnet show and store the ID in a variable.

# Get the id for myVirtualNetwork1.
vNet1Id=$(az network vnet show \
  --resource-group myResourceGroup \
  --name myVirtualNetwork1 \
  --query id --out tsv)

# Get the id for myVirtualNetwork2.
vNet2Id=$(az network vnet show \
  --resource-group myResourceGroup \
  --name myVirtualNetwork2 \
  --query id \
  --out tsv)

Создайте пиринговую связь сети myVirtualNetwork1 с сетью myVirtualNetwork2, выполнив команду az network vnet peering create.Create a peering from myVirtualNetwork1 to myVirtualNetwork2 with az network vnet peering create. Если не указать параметр --allow-vnet-access, пиринговая связь будет создана, но не позволит обмениваться данными.If the --allow-vnet-access parameter is not specified, a peering is established, but no communication can flow through it.

az network vnet peering create \
  --name myVirtualNetwork1-myVirtualNetwork2 \
  --resource-group myResourceGroup \
  --vnet-name myVirtualNetwork1 \
  --remote-vnet $vNet2Id \
  --allow-vnet-access

В выходных данных указанной выше команды можно заметить, что параметр peeringState имеет значение Initiated.In the output returned after the previous command executes, you see that the peeringState is Initiated. Состояние Инициировано не изменится, пока не будет создан пиринг сети myVirtualNetwork2 с сетью myVirtualNetwork1.The peering remains in the Initiated state until you create the peering from myVirtualNetwork2 to myVirtualNetwork1. Установите пиринговую связь сети myVirtualNetwork2 с сетью myVirtualNetwork1.Create a peering from myVirtualNetwork2 to myVirtualNetwork1.

az network vnet peering create \
  --name myVirtualNetwork2-myVirtualNetwork1 \
  --resource-group myResourceGroup \
  --vnet-name myVirtualNetwork2 \
  --remote-vnet $vNet1Id \
  --allow-vnet-access

В выходных данных этой команды параметр peeringState принимает значение Подключено.In the output returned after the previous command executes, you see that the peeringState is Connected. Одновременно с этим Azure установит значение Подключено и для первого пиринга myVirtualNetwork1-myVirtualNetwork2.Azure also changed the peering state of the myVirtualNetwork1-myVirtualNetwork2 peering to Connected. Убедитесь, что для пиринга myVirtualNetwork1-myVirtualNetwork2 установилось состояние Подключено, выполнив команду az network vnet peering show.Confirm that the peering state for the myVirtualNetwork1-myVirtualNetwork2 peering changed to Connected with az network vnet peering show.

az network vnet peering show \
  --name myVirtualNetwork1-myVirtualNetwork2 \
  --resource-group myResourceGroup \
  --vnet-name myVirtualNetwork1 \
  --query peeringState

Ресурсы одной виртуальной сети не могут взаимодействовать с ресурсами другой виртуальной сети, пока состояние пиринга для обеих виртуальных сетей не примет значение Подключен.Resources in one virtual network cannot communicate with resources in the other virtual network until the peeringState for the peerings in both virtual networks is Connected.

Создание виртуальных машинCreate virtual machines

Создайте виртуальную машину в каждой виртуальной сети, чтобы на следующем шаге организовать взаимодействие между такими машинами.Create a VM in each virtual network so that you can communicate between them in a later step.

Создание первой виртуальной машиныCreate the first VM

Создайте виртуальную машину с помощью команды az vm create.Create a VM with az vm create. В приведенном ниже примере в виртуальной сети myVirtualNetwork1 создается виртуальная машина с именем myVm1.The following example creates a VM named myVm1 in the myVirtualNetwork1 virtual network. Также команда создает ключи SSH, если они не существуют в расположении ключей по умолчанию.If SSH keys do not already exist in a default key location, the command creates them. Чтобы использовать определенный набор ключей, используйте параметр --ssh-key-value.To use a specific set of keys, use the --ssh-key-value option. Чтобы можно было перейти к следующему шагу, параметр --no-wait позволяет создать виртуальную машину в фоновом режиме.The --no-wait option creates the VM in the background, so you can continue to the next step.

az vm create \
  --resource-group myResourceGroup \
  --name myVm1 \
  --image UbuntuLTS \
  --vnet-name myVirtualNetwork1 \
  --subnet Subnet1 \
  --generate-ssh-keys \
  --no-wait

Создание второй виртуальной машиныCreate the second VM

Создайте виртуальную машину в виртуальной сети myVirtualNetwork2.Create a VM in the myVirtualNetwork2 virtual network.

az vm create \
  --resource-group myResourceGroup \
  --name myVm2 \
  --image UbuntuLTS \
  --vnet-name myVirtualNetwork2 \
  --subnet Subnet1 \
  --generate-ssh-keys

Создание виртуальной машины занимает несколько минут.The VM takes a few minutes to create. После создания виртуальной машины в Azure CLI отображаются примерно такие данные:After the VM is created, the Azure CLI shows information similar to the following example:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm2",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.1.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

Запишите значение publicIpAddress.Take note of the publicIpAddress. На следующем шаге этот адрес потребуется для доступа к виртуальной машине из Интернета.This address is used to access the VM from the internet in a later step.

Взаимодействие между виртуальными машинамиCommunicate between VMs

Создайте сеанс SSH с виртуальной машиной myVm2 при помощи приведенной ниже команды.Use the following command to create an SSH session with the myVm2 VM. Замените <publicIpAddress> общедоступным IP-адресом, который присвоен виртуальной машине.Replace <publicIpAddress> with the public IP address of your VM. В предыдущем примере общедоступный IP-адрес — 13.90.242.231.In the previous example, the public IP address is 13.90.242.231.

ssh <publicIpAddress>

Проверьте связь с виртуальной машиной в виртуальной сети myVirtualNetwork1.Ping the VM in myVirtualNetwork1.

ping 10.0.0.4 -c 4

Вы получите четыре ответа.You receive four replies.

Закройте сеанс SSH с виртуальной машиной myVm2.Close the SSH session to the myVm2 VM.

Очистка ресурсовClean up resources

Вы можете удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы, выполнив команду az group delete.When no longer needed, use az group delete to remove the resource group and all of the resources it contains.

az group delete --name myResourceGroup --yes

Дальнейшие действияNext steps

Из этой статьи вы узнали, как с помощью пиринга соединить две виртуальные сети в одном регионе Azure.In this article, you learned how to connect two networks in the same Azure region, with virtual network peering. Пиринг можно использовать и для подключения виртуальных сетей из разных поддерживаемых регионов или разных подписок Azure, а также для создания звездообразной топологии сети.You can also peer virtual networks in different supported regions and in different Azure subscriptions, as well as create hub and spoke network designs with peering. Чтобы узнать больше о пиринге виртуальных сетей, ознакомьтесь с разделами Пиринг между виртуальными сетями и Создание, изменение и удаление пиринга в виртуальной сети.To learn more about virtual network peering, see Virtual network peering overview and Manage virtual network peerings.

Теперь вы можете подключить свой компьютер к виртуальной сети через VPN и взаимодействовать с ресурсами в виртуальной сети или в виртуальных сетях, соединенных пиринговой связью.You can connect your own computer to a virtual network through a VPN, and interact with resources in a virtual network, or in peered virtual networks. Примеры сценариев для многократного использования, с помощью которых можно выполнять многие задачи, описанные в статьях о виртуальных сетях, можно найти здесь.For reusable scripts to complete many of the tasks covered in the virtual network articles, see script samples.