Udostępnij za pośrednictwem


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. Do użycia 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 korzystania z sieci wirtualnych w usłudze Azure HDInsight, zobacz Planowanie sieci wirtualnej dla usługi Azure HDInsight.

Wymagania wstępne dotyczące przykładów kodu i przykładów

Przed wykonaniem któregokolwiek z przykładów kodu w tym artykule należy poznać sieć 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:

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 dokument Connect HDInsight to your on-premises network (Łączenie usługi 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, z których korzystasz. Te informacje można znaleźć w temacie Adresy IP zarządzania usługą HDInsight.

Szablon usługi Azure Resource Manager

Poniższy szablon 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 następującego 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 i hdirule1hdirule2 w tym przykładzie, aby odpowiadały regionowi platformy Azure, którego używasz. Te informacje można znaleźć w 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.

  1. Użyj następującego polecenia, aby utworzyć nową sieciową grupę zabezpieczeń o nazwie hdisecure. Zastąp RESOURCEGROUP element grupą zasobów zawierającą Virtual Network Azure. Zastąp LOCATION element lokalizacją (region), w którym utworzono grupę.

    az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
    

    Po utworzeniu grupy otrzymasz informacje o nowej grupie.

  2. 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 Virtual Network Azure.

    Ważne

    Zmień adresy IP dla i hdirule1hdirule2 w tym przykładzie, aby odpowiadały regionowi platformy Azure, którego używasz. 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"
    
  3. 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"
    
  4. Użyj następującego polecenia, aby zastosować sieciową grupę zabezpieczeń do podsieci. GUID Zastąp wartości i RESOURCEGROUP wartościami zwróconymi z poprzedniego kroku. Zastąp VNETNAME wartości i SUBNETNAME nazwą sieci wirtualnej oraz 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 Virtual Network.

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 Virtual Network jest zablokowany. Aby włączyć dostęp spoza sieci wirtualnej, należy dodać dodatkowe reguły 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 Virtual Network platformy Azure, która jest połączona z siecią lokalną przy użyciu bramy sieci VPN.

  • Niestandardowy serwer DNS w sieci wirtualnej jest uruchomiony jako system operacyjny Linux lub Unix.

  • Powiązanie jest instalowane na niestandardowym serwerze DNS.

Na niestandardowym serwerze DNS w sieci wirtualnej:

  1. Użyj 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"
    
  2. Na niestandardowym serwerze DNS dla sieci wirtualnej użyj następującego /etc/bind/named.conf.local tekstu jako zawartości 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 rekursywnego rozpoznawania nazw platformy Azure.

  3. Na niestandardowym serwerze DNS dla sieci wirtualnej użyj następującego /etc/bind/named.conf.options tekstu jako zawartości 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 rozpoznawanie nazw adresów żądań w tym zakresie.

    • Dodaj zakres adresów IP sieci lokalnej do acl goodclients { ... } sekcji . Pozycja 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.

  4. Aby użyć konfiguracji, uruchom ponownie polecenie Bind. Na przykład sudo service bind9 restart.

  5. Dodawanie warunkowego usługi przesyłania dalej do lokalnego serwera DNS. Skonfiguruj usługę przesyłania dalej warunkowego w celu wysyłania żądań 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 usługi przesyłania dalej warunkowego.

Po wykonaniu tych kroków możesz połączyć się 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, które są 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.

  1. Użyj 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"
    
  2. 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.

  3. 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 i 10.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.

  4. Aby użyć konfiguracji, uruchom ponownie polecenie Bind. 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 modułu sprawdzania poprawności sieci usługi HDInsight na maszynie wirtualnej platformy Azure z systemem Linux w tej samej sieci wirtualnej i podsieci co planowany klaster.

Następne kroki