Как подключить виртуальные сети Azure с помощью пиринга виртуальных сетей
Пиринг виртуальной сети Azure (VNet) позволяет подключить две или более виртуальных сетей в Azure. С точки зрения подключения две одноранговые сети выглядят как одна. Пиринговый трафик направляется через частную сеть Microsoft, а не через общедоступный Интернет. Виртуальная сеть Azure — это программно-определяемая сеть с настраиваемым адресным пространством и сегментированными подсетями.
Azure предлагает два типа пиринга.
- Пиринг виртуальных сетей позволяет подключать виртуальные сети в одном регионе Azure.
- Глобальный пиринг виртуальных сетей соединяет трафик между регионами Azure.
Зачем нам использовать пиринг виртуальных сетей для соединения двух разных виртуальных сетей? У одноранговых сетей есть несколько преимуществ.
- Используйте соединение с малой задержкой и высокой пропускной способностью между ресурсами в разных виртуальных сетях.
- Перенос данных между подписками Azure, арендаторами и регионами.
- Нет простоев при настройке одноранговых виртуальных сетей.
В этой статье мы собираемся продемонстрировать создание одноранговой сети с помощью команд Azure Powershell. Для выполнения этих команд вам понадобится модуль Azure PowerShell.
Подключение виртуальных машин через одноранговые виртуальные сети
В этом руководстве мы собираемся создать две новые группы ресурсов, виртуальные сети и виртуальные машины. После того, как все будет настроено, мы проверим виртуальные сети между двумя виртуальными машинами Azure и продемонстрируем, что они действительно могут взаимодействовать. Во-первых, нам нужно импортировать модуль Az
и пройти аутентификацию в Azure с помощью командлета Connect-AzAccount
.
Import-Module -Name 'Az'
Connect-AzAccount
Далее, для этого руководства, мы собираемся создать две группы ресурсов, в которых будут находиться наши виртуальные машины и виртуальные сети.
New-AzResourceGroup -Name 'TestLocation1' -Location "Central US"
New-AzResourceGroup -Name 'TestLocation2' -Location "Central US"
Прежде чем мы подготовим наши виртуальные машины, нам сначала нужно создать разные виртуальные сети, которые мы хотели бы синхронизировать друг с другом.
$Params = @{
"Name" = 'TestVirtualNetwork1'
"ResourceGroupName" = 'TestLocation1'
"Location" = 'Central US'
"AddressPrefix" = '10.0.0.0/16'
"Subnet" = (New-AzVirtualNetworkSubnetConfig -Name 'VMSubnet' -AddressPrefix '10.0.1.0/24')
}
New-AzVirtualNetwork @Params
$Params = @{
"Name" = 'TestVirtualNetwork2'
"ResourceGroupName" = 'TestLocation2'
"Location" = 'Central US'
"AddressPrefix" = '10.1.0.0/16'
"Subnet" = (New-AzVirtualNetworkSubnetConfig -Name 'VMSubnet' -AddressPrefix '10.1.1.0/24')
}
New-AzVirtualNetwork @Params
Мы можем убедиться, что виртуальные сети успешно созданы, с помощью командлета Get-AzVirtualNetwork
.
Чтобы продемонстрировать, что мы можем соединить две виртуальные сети, нам нужны ресурсы внутри этих сетей для отправки трафика. Для этого создадим две стандартные виртуальные машины, расположенные каждая в разных виртуальных сетях.
$Params = @{
'Name' = 'LCWin2019-01'
'ResourceGroupName' = 'TestLocation1'
'Location' = 'centralus'
'VirtualNetworkName' = 'TestVirtualNetwork1'
'SubnetName' = 'VMSubnet'
'AddressPrefix' = '10.0.1.0/24'
'PublicIpAddressName' = 'TestVM01PublicIP'
'OpenPorts' = 3389
'Image' = 'MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest'
'Size' = 'Standard_D2_v3'
'Credential' = $VMCredential
}
$VM1 = New-AzVM @Params
$Params = @{
'Name' = 'LCWin2019-02'
'ResourceGroupName' = 'TestLocation2'
'Location' = 'centralus'
'VirtualNetworkName' = 'TestVirtualNetwork2'
'SubnetName' = 'VMSubnet'
'AddressPrefix' = '10.1.1.0/24'
'PublicIpAddressName' = 'TestVM02PublicIP'
'OpenPorts' = 3389
'Image' = 'MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest'
'Size' = 'Standard_D2_v3'
'Credential' = $VMCredential
}
$VM2 = New-AzVM @Params
Наконец, мы соединим две виртуальные сети с помощью Add-AzVirtualNetworkPeering
. После получения конфигураций виртуальной сети мы передадим эту информацию для создания однорангового соединения.
Вы можете заметить, что нам нужно смотреть с двух сторон. Это дает вам гибкость в том, как вы хотите структурировать поток данных, но также легко упустить это при настройке пиринга!
$VNet1 = Get-AzVirtualNetwork -Name 'TestVirtualNetwork1' -ResourceGroupName 'TestLocation1'
$VNet2 = Get-AzVirtualNetwork -Name 'TestVirtualNetwork2' -ResourceGroupName 'TestLocation2'
$Params = @{
'Name' = 'TestVirtualNetwork1peerTestVirtualNetwork2'
'VirtualNetwork' = $VNet1
'RemoteVirtualNetworkId' = $VNet2.Id
}
Add-AzVirtualNetworkPeering @Params
$Params = @{
'Name' = 'TestVirtualNetwork2peerTestVirtualNetwork1'
'VirtualNetwork' = $VNet2
'RemoteVirtualNetworkId' = $VNet1.Id
}
Add-AzVirtualNetworkPeering @Params
Используя Get-AzVirtualNetworkPeering
, мы видим, что наши одноранговые сети теперь доступны для использования.
Демонстрация однорангового виртуального сетевого подключения
Теперь, когда все правильно подключено, мы можем показать, что виртуальные машины могут успешно пинговать друг друга. Во-первых, убедитесь, что ваши сетевые адаптеры находятся в частной сети и разрешено правило брандмауэра «Общий доступ к файлам и принтерам» (эхо-запрос — ICMPv4-In). В противном случае, даже в одноранговой сети, ваши пинг-тесты, скорее всего, не пройдут.
Как вы можете видеть ниже, обе стороны однорангового виртуального сетевого подключения работают должным образом.
Заключение
Подключение виртуальных сетей Azure через пиринг позволяет различным ресурсам легко взаимодействовать и безопасно обмениваться данными. С PowerShell эта задача упрощается и может быть быстро включена в сценарии развертывания. Даже если вы используете отдельные виртуальные сети как из соображений политики, так и из соображений безопасности, вы не ограничены в возможностях подключения виртуальных машин. Начните работу с виртуальными сетями Azure уже сегодня!