Tworzenie sieci wirtualnych dla klastrów usługi Azure HDInsight
Ten artykuł zawiera przykłady i przykłady kodu służące do tworzenia i konfigurowania sieci wirtualnych platformy Azure. Aby używać z klastrami usługi Azure HDInsight. Przedstawiono szczegółowe przykłady tworzenia sieciowych grup zabezpieczeń i konfigurowania systemu DNS.
Aby uzyskać podstawowe informacje na temat używania sieci wirtualnych z usługą Azure HDInsight, zobacz Planowanie sieci wirtualnej dla usługi Azure HDInsight.
Wymagania wstępne dotyczące przykładów i przykładów kodu
Przed wykonaniem któregokolwiek z przykładów kodu w tym artykule zapoznaj się z siecią TCP/IP. Jeśli nie znasz sieci TCP/IP, przed wprowadzeniem modyfikacji sieci produkcyjnych skontaktuj się z osobą.
Inne wymagania wstępne dotyczące przykładów w tym artykule obejmują następujące elementy:
- Jeśli używasz programu PowerShell, musisz zainstalować moduł AZ.
- Jeśli chcesz używać interfejsu wiersza polecenia platformy Azure i jeszcze go nie zainstalowano, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Ważne
Jeśli szukasz szczegółowych wskazówek dotyczących łączenia usługi HDInsight z siecią lokalną przy użyciu usługi Azure Virtual Network, zobacz How to connect HDInsight to your on-premises network (Jak połączyć usługę HDInsight z siecią lokalną).
Przykład: sieciowe grupy zabezpieczeń w usłudze HDInsight
W przykładach w tej sekcji pokazano, jak utworzyć reguły sieciowej grupy zabezpieczeń. Reguły umożliwiają usłudze HDInsight komunikowanie się z usługami zarządzania platformy Azure. Przed użyciem przykładów dostosuj adresy IP, aby odpowiadały tym regionom platformy Azure, których używasz. Te informacje można znaleźć w temacie Adresy IP zarządzania usługą HDInsight.
Szablon usługi Azure Resource Manager
Poniższy szablon usługi Resource Manager tworzy sieć wirtualną, która ogranicza ruch przychodzący, ale zezwala na ruch z adresów IP wymaganych przez usługę HDInsight. Ten szablon tworzy również klaster usługi HDInsight w sieci wirtualnej.
Azure PowerShell
Użyj poniższego skryptu programu PowerShell, aby utworzyć sieć wirtualną, która ogranicza ruch przychodzący i zezwala na ruch z adresów IP dla regionu Europa Północna.
Ważne
Zmień adresy IP dla hdirule1
i hdirule2
w tym przykładzie, aby pasować do używanego regionu platformy Azure. Te informacje można znaleźć na adresach IP zarządzania usługą 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
W tym przykładzie pokazano, jak dodać reguły zezwalania na ruch przychodzący na wymaganych adresach IP. Nie zawiera reguły ograniczania dostępu przychodzącego z innych źródeł. Poniższy kod pokazuje, jak włączyć dostęp SSH z Internetu:
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
Interfejs wiersza polecenia platformy Azure
Wykonaj poniższe kroki, aby utworzyć sieć wirtualną, która ogranicza ruch przychodzący, ale zezwala na ruch z adresów IP wymaganych przez usługę HDInsight.
Użyj następującego polecenia, aby utworzyć nową sieciową grupę zabezpieczeń o nazwie
hdisecure
. ZastąpRESOURCEGROUP
element grupą zasobów zawierającą usługę Azure Virtual Network. ZastąpLOCATION
element lokalizacją (region), w której utworzono grupę.az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
Po utworzeniu grupy otrzymasz informacje o nowej grupie.
Użyj poniższych instrukcji, aby dodać reguły do nowej sieciowej grupy zabezpieczeń, która zezwala na komunikację przychodzącą na porcie 443 z usługi Kondycja i zarządzanie usługi Azure HDInsight. Zastąp
RESOURCEGROUP
ciąg nazwą grupy zasobów, która zawiera usługę Azure Virtual Network.Ważne
Zmień adresy IP dla
hdirule1
ihdirule2
w tym przykładzie, aby pasować do używanego regionu platformy Azure. Te informacje można znaleźć w temacie Adresy IP zarządzania usługą 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"
Aby pobrać unikatowy identyfikator dla tej sieciowej grupy zabezpieczeń, użyj następującego polecenia:
az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
To polecenie zwraca wartość podobną do następującego tekstu:
"/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Użyj następującego polecenia, aby zastosować sieciową grupę zabezpieczeń do podsieci.
GUID
Zastąp wartości iRESOURCEGROUP
wartościami zwróconymi z poprzedniego kroku. ZastąpVNETNAME
wartości iSUBNETNAME
nazwą sieci wirtualnej i nazwą podsieci, którą chcesz utworzyć.az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Po zakończeniu tego polecenia możesz zainstalować usługę HDInsight w sieci wirtualnej.
Te kroki umożliwiają tylko otwieranie dostępu do usługi kondycji i zarządzania usługi HDInsight w chmurze platformy Azure. Każdy inny dostęp do klastra usługi HDInsight spoza sieci wirtualnej jest blokowany. Aby włączyć dostęp spoza sieci wirtualnej, należy dodać więcej reguł sieciowej grupy zabezpieczeń.
Poniższy kod pokazuje, jak włączyć dostęp SSH z Internetu:
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"
Przykład: konfiguracja DNS
Rozpoznawanie nazw między siecią wirtualną a połączoną siecią lokalną
W tym przykładzie przyjmuje się następujące założenia:
Masz sieć wirtualną platformy Azure połączoną z siecią lokalną przy użyciu bramy sieci VPN.
Niestandardowy serwer DNS w sieci wirtualnej działa z systemem Linux lub Unix jako system operacyjny.
Powiązanie jest instalowane na niestandardowym serwerze DNS.
Na niestandardowym serwerze DNS w sieci wirtualnej:
Użyj programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby znaleźć sufiks DNS sieci wirtualnej:
Zastąp
RESOURCEGROUP
ciąg nazwą grupy zasobów, która zawiera sieć wirtualną, a następnie wprowadź polecenie:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
Na niestandardowym serwerze DNS dla sieci wirtualnej użyj następującego tekstu jako zawartości
/etc/bind/named.conf.local
pliku:// 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 };
Zastąp
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
wartość sufiksem DNS sieci wirtualnej.Ta konfiguracja kieruje wszystkie żądania DNS dla sufiksu DNS sieci wirtualnej do programu rozpoznawania cyklicznego platformy Azure.
Na niestandardowym serwerze DNS dla sieci wirtualnej użyj następującego tekstu jako zawartości
/etc/bind/named.conf.options
pliku:// 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; }; };
Zastąp
10.0.0.0/16
wartość zakresem adresów IP sieci wirtualnej. Ten wpis umożliwia adresy żądań rozpoznawania nazw w tym zakresie.Dodaj zakres adresów IP sieci lokalnej do
acl goodclients { ... }
sekcji . Wpis umożliwia rozpoznawanie nazw żądań z zasobów w sieci lokalnej.Zastąp wartość
192.168.0.1
adresem IP lokalnego serwera DNS. Ten wpis kieruje wszystkie inne żądania DNS do lokalnego serwera DNS.
Aby użyć konfiguracji, uruchom ponownie powiązanie. Na przykład
sudo service bind9 restart
.Dodaj warunkowy usługę przesyłania dalej do lokalnego serwera DNS. Skonfiguruj usługę przesyłania dalej warunkowego, aby wysyłać żądania dla sufiksu DNS z kroku 1 do niestandardowego serwera DNS.
Uwaga
Zapoznaj się z dokumentacją oprogramowania DNS, aby uzyskać szczegółowe informacje na temat sposobu dodawania warunkowego usługi przesyłania dalej.
Po wykonaniu tych kroków można nawiązać połączenie z zasobami w obu sieciach przy użyciu w pełni kwalifikowanych nazw domen (FQDN). Teraz możesz zainstalować usługę HDInsight w sieci wirtualnej.
Rozpoznawanie nazw między dwiema połączonymi sieciami wirtualnymi
W tym przykładzie przyjmuje się następujące założenia:
Masz dwie sieci wirtualne platformy Azure połączone przy użyciu bramy sieci VPN lub komunikacji równorzędnej.
Niestandardowy serwer DNS w obu sieciach działa z systemem Linux lub Unix jako system operacyjny.
Powiązanie jest instalowane na niestandardowych serwerach DNS.
Użyj programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby znaleźć sufiks DNS obu sieci wirtualnych:
Zastąp
RESOURCEGROUP
ciąg nazwą grupy zasobów, która zawiera sieć wirtualną, a następnie wprowadź polecenie:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
Użyj następującego tekstu jako zawartości
/etc/bind/named.config.local
pliku na niestandardowym serwerze DNS. Wprowadź tę zmianę na niestandardowym serwerze DNS w obu sieciach wirtualnych.// 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 };
Zastąp
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
wartość sufiksem DNS innej sieci wirtualnej. Ten wpis kieruje żądania sufiksu DNS sieci zdalnej do niestandardowego systemu DNS w tej sieci.Na niestandardowych serwerach DNS w obu sieciach wirtualnych użyj następującego
/etc/bind/named.conf.options
tekstu jako zawartości pliku:// 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
Zastąp wartości i10.1.0.0/16
zakresami adresów IP sieci wirtualnych. Ten wpis umożliwia zasobom w każdej sieci wykonywanie żądań serwerów DNS.Wszystkie żądania, które nie są przeznaczone dla sufiksów DNS sieci wirtualnych (na przykład microsoft.com), są obsługiwane przez program rozpoznawania cyklicznego platformy Azure.
Aby użyć konfiguracji, uruchom ponownie powiązanie. Na przykład
sudo service bind9 restart
na obu serwerach DNS.
Po wykonaniu tych kroków możesz nawiązać połączenie z zasobami w sieci wirtualnej przy użyciu w pełni kwalifikowanych nazw domen (FQDN). Teraz możesz zainstalować usługę HDInsight w sieci wirtualnej.
Testowanie ustawień przed wdrożeniem klastra usługi HDInsight
Przed wdrożeniem klastra możesz sprawdzić, czy wiele ustawień konfiguracji sieci jest poprawnych, uruchamiając narzędzie sprawdzania poprawności sieci usługi HDInsight na maszynie wirtualnej z systemem Linux platformy Azure w tej samej sieci wirtualnej i podsieci co planowany klaster.
Następne kroki
Pełny przykład konfigurowania usługi HDInsight w celu nawiązania połączenia z siecią lokalną można znaleźć w temacie Connect HDInsight to an on-premises network (Łączenie usługi HDInsight z siecią lokalną).
Aby skonfigurować klastry Apache HBase w sieciach wirtualnych platformy Azure, zobacz Tworzenie klastrów Apache HBase w usłudze HDInsight w usłudze Azure Virtual Network.
Aby skonfigurować replikację geograficzną bazy danych Apache HBase, zobacz Konfigurowanie replikacji klastra Apache HBase w sieciach wirtualnych platformy Azure.
Aby uzyskać więcej informacji na temat sieci wirtualnych platformy Azure, zobacz Omówienie usługi Azure Virtual Network.
Aby uzyskać więcej informacji na temat sieciowych grup zabezpieczeń, zobacz Sieciowe grupy zabezpieczeń.
Aby uzyskać więcej informacji na temat tras zdefiniowanych przez użytkownika, zobacz Trasy zdefiniowane przez użytkownika i przekazywanie adresów IP.