Создание виртуальных сетей для кластеров Azure HDInsight
В этой статье приводятся рекомендации и примеры кода для создания и настройки виртуальных сетей Azure, которые можно использовать с кластерами Azure HDInsight. Ниже представлены подробные примеры создания групп безопасности сети (NSG) и настройки службы доменных имен (DNS).
Дополнительные сведения об использовании виртуальных сетей с HDInsight см. в статье о планировании виртуальной сети для Azure HDInsight.
Необходимые условия для работы с примерами кода
Перед тем как выполнить любой из примеров кода из этой статьи, изучите общую информацию о сетях TCP/IP. Если вы не знакомы с ними, перед внесением изменений в рабочие сети обратитесь к специалистам по сетями TCP/IP.
Ниже приведены другие условия для работы с примерами из этой статьи.
- Если вы используете PowerShell, необходимо установить модуль AZ.
- Если вы хотите использовать Azure CLI и еще не установили его, ознакомьтесь с разделом Установка Azure CLI.
Внимание
Если вы ищете пошаговые инструкции по подключению HDInsight к локальной сети с помощью azure виртуальная сеть, ознакомьтесь с инструкциями по подключению HDInsight к локальной сети.
Пример: группы безопасности сети с HDInsight
В примерах этого раздела показано, как создавать правила для групп безопасности сети. Эти правила позволяют HDInsight обмениваться данными со службами управления Azure. Прежде чем использовать эти примеры, настройте IP-адреса в соответствии с теми, которые применяются для вашего региона Azure. Эти сведения можно найти в списке IP-адресов управления HDInsight.
Шаблон Azure Resource Manager
Следующий шаблон Resource Manager создает виртуальную сеть, которая ограничивает входящий трафик, но разрешает трафик с IP-адресов, требуемых для HDInsight. Этот шаблон также создает кластер HDInsight в виртуальной сети.
Azure PowerShell
Используйте следующий сценарий PowerShell для создания виртуальной сети, которая ограничивает входящий трафик и разрешает трафик с IP-адресов для региона Северная Европа.
Внимание
Измените IP-адреса для hdirule1
и hdirule2
в этом примере в соответствии с теми, которые применяются для вашего региона Azure. Эти сведения можно найти в списке IP-адресов управления HDInsight.
$vnetName = "Replace with your virtual network name"
$resourceGroupName = "Replace with the resource group the virtual network is in"
$subnetName = "Replace with the name of the subnet that you plan to use for HDInsight"
# Get the Virtual Network object
$vnet = Get-AzVirtualNetwork `
-Name $vnetName `
-ResourceGroupName $resourceGroupName
# Get the region the Virtual network is in.
$location = $vnet.Location
# Get the subnet object
$subnet = $vnet.Subnets | Where-Object Name -eq $subnetName
# Create a Network Security Group.
# And add exemptions for the HDInsight health and management services.
$nsg = New-AzNetworkSecurityGroup `
-Name "hdisecure" `
-ResourceGroupName $resourceGroupName `
-Location $location `
| Add-AzNetworkSecurityRuleConfig `
-name "hdirule1" `
-Description "HDI health and management address 52.164.210.96" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "52.164.210.96" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 300 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule2" `
-Description "HDI health and management 13.74.153.132" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "13.74.153.132" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 301 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule3" `
-Description "HDI health and management 168.61.49.99" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "168.61.49.99" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 302 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule4" `
-Description "HDI health and management 23.99.5.239" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "23.99.5.239" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 303 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule5" `
-Description "HDI health and management 168.61.48.131" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "168.61.48.131" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 304 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule6" `
-Description "HDI health and management 138.91.141.162" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "138.91.141.162" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 305 `
-Direction Inbound `
# Set the changes to the security group
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
# Apply the NSG to the subnet
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork
В этом примере показано, как добавить правила, чтобы разрешить входящий трафик на требуемые IP-адреса. В нем не содержится правило, ограничивающее входящий доступ из других источников. В следующем примере кода показано, как включить доступ по SSH через Интернет:
Get-AzNetworkSecurityGroup -Name hdisecure -ResourceGroupName RESOURCEGROUP |
Add-AzNetworkSecurityRuleConfig -Name "SSH" -Description "SSH" -Protocol "*" -SourcePortRange "*" -DestinationPortRange "22" -SourceAddressPrefix "*" -DestinationAddressPrefix "VirtualNetwork" -Access Allow -Priority 306 -Direction Inbound
Azure CLI
Ниже приведен порядок действий по созданию виртуальной сети, которая ограничивает входящий трафик, но разрешает трафик с IP-адресов, требуемых для HDInsight.
Используйте следующую команду, чтобы создать новую группу безопасности сети с именем
hdisecure
. ЗаменитеRESOURCEGROUP
на имя группы ресурсов, которая содержит виртуальную сеть Azure. ЗаменитеLOCATION
на название расположения (региона), в котором была создана группа.az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
После создания группы вы получите сведения о новой группе.
Используйте следующую команду для добавления правил в новую группу безопасности сети. Эти правила разрешают входящий трафик через порт 443 от службы работоспособности и управления Azure HDInsight. Замените
RESOURCEGROUP
на имя группы ресурсов, которая содержит виртуальную сеть Azure.Внимание
Измените IP-адреса для
hdirule1
иhdirule2
в этом примере в соответствии с теми, которые применяются для вашего региона Azure. Эти сведения можно найти в списке IP-адресов управления HDInsight.az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule1 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "52.164.210.96" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 300 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule2 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "13.74.153.132" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 301 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule3 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.49.99" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 302 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule4 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "23.99.5.239" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 303 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule5 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.48.131" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 304 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule6 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "138.91.141.162" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 305 --direction "Inbound"
Используйте следующую команду, чтобы получить уникальный идентификатор для этой группы безопасности сети:
az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
Эта команда возвращает значение следующего вида:
"/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Используйте следующую команду, чтобы применить группу безопасности сети к подсети. Замените
GUID
иRESOURCEGROUP
на значения, возвращенные на предыдущем шаге. ЗаменитеVNETNAME
иSUBNETNAME
на имена виртуальной сети и подсети, которые необходимо создать.az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
После выполнения этой команды можно установить HDInsight в виртуальную сеть.
Данные действия только открывают доступ к службе работоспособности и управления HDInsight в облаке Azure. Весь остальной доступ к кластеру HDInsight из-за пределов виртуальной сети блокируется. Чтобы включить доступ извне виртуальной сети, необходимо добавить дополнительные правила группы безопасности сети.
В следующем примере кода показано, как включить доступ по SSH через Интернет:
az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n ssh --protocol "*" --source-port-range "*" --destination-port-range "22" --source-address-prefix "*" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 306 --direction "Inbound"
Пример: конфигурация DNS
Разрешение DNS-имен между виртуальной сетью и подключенной локальной сетью
Данный пример исходит из следующих предположений:
Имеется виртуальная сеть Azure, подключенная к локальной сети посредством VPN-шлюза.
Пользовательский DNS-сервер в виртуальной сети работает под управлением операционной системы Unix или Linux.
На пользовательском DNS-сервере установлен Bind.
На пользовательском DNS-сервере в виртуальной сети:
Воспользуйтесь Azure PowerShell или Azure CLI для поиска DNS-суффикса виртуальной сети:
Замените
RESOURCEGROUP
на имя группы ресурсов, которая содержит виртуальную сеть Azure, а затем введите указанную ниже команду.$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
На пользовательском DNS-сервере для виртуальной сети добавьте в файл
/etc/bind/named.conf.local
следующее содержимое:// Forward requests for the virtual network suffix to Azure recursive resolver zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" { type forward; forwarders {168.63.129.16;}; # Azure recursive resolver };
Замените значение
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
DNS-суффиксом виртуальной сети.Такая конфигурация обеспечивает перенаправление запросов DNS-суффиксов виртуальной сети на рекурсивный сопоставитель Azure.
На пользовательском DNS-сервере для виртуальной сети добавьте в файл
/etc/bind/named.conf.options
следующее содержимое:// Clients to accept requests from // TODO: Add the IP range of the joined network to this list acl goodclients { 10.0.0.0/16; # IP address range of the virtual network localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; # All other requests are sent to the following forwarders { 192.168.0.1; # Replace with the IP address of your on-premises DNS server }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on { any; }; };
Замените значение
10.0.0.0/16
диапазоном IP-адресов виртуальной сети. Эта запись разрешает запросы на разрешение имен в этом диапазоне.Добавьте диапазон IP-адресов локальной сети в раздел
acl goodclients { ... }
. Эта запись разрешает запросы на разрешения имен с ресурсов в локальной сети.Замените значение
192.168.0.1
IP-адресом локального DNS-сервера. Эта запись направляет все остальные DNS-запросы на локальный DNS-сервер.
Чтобы использовать конфигурацию, перезапустите Bind. Например,
sudo service bind9 restart
.Добавьте условный сервер пересылки на локальный DNS-сервер. Настройте условный сервер пересылки на отправку запросов DNS-суффикса из шага 1 на пользовательский DNS-сервер.
Примечание.
Обратитесь к документации по используемому программному обеспечению DNS, чтобы ознакомиться со сведениями о добавлении условного сервера пересылки.
После выполнения этих действий можно подключаться к ресурсам в любой из этих сетей, используя полные доменные имена (FQDN). Теперь можно установить HDInsight в виртуальной сети.
Разрешение имен между двумя подключенными виртуальными сетями
Данный пример исходит из следующих предположений:
Имеется две виртуальных сети Azure, подключенные друг к другу посредством VPN-шлюза или пиринга.
Пользовательский DNS-сервер в обеих виртуальных сетях работает под управлением операционной системы Unix или Linux.
На пользовательских DNS-серверах установлен Bind.
Воспользуйтесь Azure PowerShell или Azure CLI для поиска DNS-суффикса в обеих виртуальных сетях:
Замените
RESOURCEGROUP
на имя группы ресурсов, которая содержит виртуальную сеть Azure, а затем введите указанную ниже команду.$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
На пользовательском DNS-сервере добавьте в файл
/etc/bind/named.config.local
следующее содержимое. Внесите это изменение на пользовательские DNS-серверы в обеих виртуальных сетях.// Forward requests for the virtual network suffix to Azure recursive resolver zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" { type forward; forwarders {10.0.0.4;}; # The IP address of the DNS server in the other virtual network };
Замените значение
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
DNS-суффиксом другой виртуальной сети. Эта запись направляет запросы DNS-суффикса удаленной сети на пользовательский DNS-сервер в этой сети.На пользовательских DNS-серверах в обеих виртуальных сетях добавьте в файл
/etc/bind/named.conf.options
следующее содержимое:// Clients to accept requests from acl goodclients { 10.1.0.0/16; # The IP address range of one virtual network 10.0.0.0/16; # The IP address range of the other virtual network localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; forwarders { 168.63.129.16; # Azure recursive resolver }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on { any; }; };
Замените значения
10.0.0.0/16
и10.1.0.0/16
диапазонами IP-адресов виртуальных сетей. Эта запись позволяет ресурсам в каждой сети выполнять запросы к DNS-серверам.Запросы, которые не предназначены для получения DNS-суффиксов виртуальных сетей (например, microsoft.com), обрабатываются рекурсивным сопоставителем Azure.
Чтобы использовать конфигурацию, перезапустите Bind. Например,
sudo service bind9 restart
на обоих DNS-серверах.
После выполнения этих действий можно подключаться к ресурсам в виртуальной сети, используя полные доменные имена (FQDN). Теперь можно установить HDInsight в виртуальной сети.
Проверка параметров перед развертыванием кластера HDInsight
Перед развертыванием кластера можно проверить правильность многих параметров конфигурации сети, выполнив средство проверки сети HDInsight на виртуальной машине Linux в той же виртуальной сети и подсети, что и запланированный кластер.
Следующие шаги
Полный пример настройки HDInsight для подключения к локальной сети см. в статье Подключение HDInsight к локальной сети.
Инструкции по настройке кластеров Apache HBase в виртуальных сетях Azure см. в статье Создание кластеров Apache HBase в HDInsight в виртуальной сети Azure.
См. инструкции по настройке георепликации кластера Apache HBase в виртуальных сетях Azure.
Дополнительные сведения о виртуальных сетях Azure см. в статье Виртуальная сеть Azure.
Дополнительные сведения о группах безопасности сети см. в статье Фильтрация сетевого трафика с помощью групп безопасности сети.
Дополнительные сведения о пользовательских маршрутах см. в статье User-defined routes and IP forwarding (Определяемые пользователем маршруты и IP-пересылка).