Skapa virtuella nätverk för Azure HDInsight-kluster

Den här artikeln innehåller exempel och kodexempel för att skapa och konfigurera virtuella Azure-nätverk. Att använda med Azure HDInsight-kluster. Detaljerade exempel på hur du skapar nätverkssäkerhetsgrupper (NSG:er) och konfigurerar DNS visas.

Bakgrundsinformation om hur du använder virtuella nätverk med Azure HDInsight finns i Planera ett virtuellt nätverk för Azure HDInsight.

Krav för kodexempel och exempel

Innan du kör något av kodexemplen i den här artikeln bör du ha en förståelse för TCP/IP-nätverk. Om du inte är bekant med TCP/IP-nätverk bör du kontakta någon innan du gör ändringar i produktionsnätverken.

Andra krav för exemplen i den här artikeln omfattar följande:

  • Om du använder PowerShell måste du installera AZ-modulen.
  • Om du vill använda Azure CLI och ännu inte har installerat det kan du läsa Installera Azure CLI.

Viktigt

Om du vill ha stegvisa anvisningar om hur du ansluter HDInsight till ditt lokala nätverk med hjälp av en Azure-Virtual Network kan du läsa dokumentet Ansluta HDInsight till ditt lokala nätverk.

Exempel: nätverkssäkerhetsgrupper med HDInsight

Exemplen i det här avsnittet visar hur du skapar regler för nätverkssäkerhetsgrupper. Reglerna gör att HDInsight kan kommunicera med Azure-hanteringstjänsterna. Innan du använder exemplen justerar du IP-adresserna så att de matchar dem för den Azure-region som du använder. Du hittar den här informationen i IP-adresser för HDInsight-hantering.

Azure Resource Manager-mall

Följande Resource Manager mall skapar ett virtuellt nätverk som begränsar inkommande trafik, men tillåter trafik från de IP-adresser som krävs av HDInsight. Den här mallen skapar också ett HDInsight-kluster i det virtuella nätverket.

Azure PowerShell

Använd följande PowerShell-skript för att skapa ett virtuellt nätverk som begränsar inkommande trafik och tillåter trafik från IP-adresserna för regionen Europa, norra.

Viktigt

Ändra IP-adresserna för hdirule1 och hdirule2 i det här exemplet så att de matchar den Azure-region som du använder. Den här informationen finns i IP-adresser för HDInsight-hantering.

$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

Det här exemplet visar hur du lägger till regler för att tillåta inkommande trafik på de IP-adresser som krävs. Den innehåller ingen regel för att begränsa inkommande åtkomst från andra källor. Följande kod visar hur du aktiverar SSH-åtkomst från Internet:

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

Använd följande steg för att skapa ett virtuellt nätverk som begränsar inkommande trafik, men tillåter trafik från de IP-adresser som krävs av HDInsight.

  1. Använd följande kommando för att skapa en ny nätverkssäkerhetsgrupp med namnet hdisecure. Ersätt RESOURCEGROUP med resursgruppen som innehåller Azure-Virtual Network. Ersätt LOCATION med den plats (region) som gruppen skapades i.

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

    När gruppen har skapats får du information om den nya gruppen.

  2. Använd följande för att lägga till regler i den nya nätverkssäkerhetsgruppen som tillåter inkommande kommunikation på port 443 från Azure HDInsights hälso- och hanteringstjänst. Ersätt RESOURCEGROUP med namnet på resursgruppen som innehåller Azure-Virtual Network.

    Viktigt

    Ändra IP-adresserna för hdirule1 och hdirule2 i det här exemplet så att de matchar den Azure-region som du använder. Du hittar den här informationen i IP-adresser för HDInsight-hantering.

    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. Använd följande kommando för att hämta den unika identifieraren för den här nätverkssäkerhetsgruppen:

    az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
    

    Det här kommandot returnerar ett värde som liknar följande text:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. Använd följande kommando för att tillämpa nätverkssäkerhetsgruppen på ett undernät. GUID Ersätt värdena och RESOURCEGROUP med de som returnerades från föregående steg. Ersätt VNETNAME och SUBNETNAME med det virtuella nätverksnamn och undernätsnamn som du vill skapa.

    az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    

    När det här kommandot har slutförts kan du installera HDInsight i Virtual Network.

De här stegen öppnar endast åtkomst till HÄLSO- och hanteringstjänsten för HDInsight i Azure-molnet. All annan åtkomst till HDInsight-klustret utanför Virtual Network blockeras. Om du vill aktivera åtkomst utanför det virtuella nätverket måste du lägga till ytterligare regler för nätverkssäkerhetsgrupper.

Följande kod visar hur du aktiverar SSH-åtkomst från Internet:

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"

Exempel: DNS-konfiguration

Namnmatchning mellan ett virtuellt nätverk och ett anslutet lokalt nätverk

I det här exemplet görs följande antaganden:

  • Du har en Azure-Virtual Network som är ansluten till ett lokalt nätverk med hjälp av en VPN-gateway.

  • Den anpassade DNS-servern i det virtuella nätverket kör Linux eller Unix som operativsystem.

  • Bindning installeras på den anpassade DNS-servern.

På den anpassade DNS-servern i det virtuella nätverket:

  1. Använd antingen Azure PowerShell eller Azure CLI för att hitta DNS-suffixet för det virtuella nätverket:

    Ersätt RESOURCEGROUP med namnet på resursgruppen som innehåller det virtuella nätverket och ange sedan kommandot:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Använd följande text som innehållet i /etc/bind/named.conf.local filen på den anpassade DNS-servern för det virtuella nätverket:

    // 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
    };
    

    Ersätt värdet 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net med DNS-suffixet för ditt virtuella nätverk.

    Den här konfigurationen dirigerar alla DNS-begäranden för DNS-suffixet för det virtuella nätverket till den rekursiva Azure-matcharen.

  3. Använd följande text som innehållet i /etc/bind/named.conf.options filen på den anpassade DNS-servern för det virtuella nätverket:

    // 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; };
    };
    
    • Ersätt värdet 10.0.0.0/16 med IP-adressintervallet för ditt virtuella nätverk. Den här posten tillåter namnmatchningsbegäranden inom det här intervallet.

    • Lägg till IP-adressintervallet för det lokala nätverket i acl goodclients { ... } avsnittet . -posten tillåter namnmatchningsbegäranden från resurser i det lokala nätverket.

    • Ersätt värdet 192.168.0.1 med IP-adressen för din lokala DNS-server. Den här posten dirigerar alla andra DNS-begäranden till den lokala DNS-servern.

  4. Starta om Bind om du vill använda konfigurationen. Till exempel sudo service bind9 restart.

  5. Lägg till en villkorlig vidarebefordrare till den lokala DNS-servern. Konfigurera den villkorliga vidarebefordraren för att skicka begäranden för DNS-suffixet från steg 1 till den anpassade DNS-servern.

    Anteckning

    Mer information om hur du lägger till en villkorsstyrd vidarebefordrare finns i dokumentationen för DIN DNS-programvara.

När du har slutfört de här stegen kan du ansluta till resurser i något av nätverken med hjälp av fullständigt kvalificerade domännamn (FQDN). Nu kan du installera HDInsight i det virtuella nätverket.

Namnmatchning mellan två anslutna virtuella nätverk

I det här exemplet görs följande antaganden:

  • Du har två virtuella Azure-nätverk som är anslutna med antingen en VPN-gateway eller peering.

  • Den anpassade DNS-servern i båda nätverken kör Linux eller Unix som operativsystem.

  • Bindning installeras på de anpassade DNS-servrarna.

  1. Använd antingen Azure PowerShell eller Azure CLI för att hitta DNS-suffixet för båda de virtuella nätverken:

    Ersätt RESOURCEGROUP med namnet på resursgruppen som innehåller det virtuella nätverket och ange sedan kommandot:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Använd följande text som innehållet i /etc/bind/named.config.local filen på den anpassade DNS-servern. Gör den här ändringen på den anpassade DNS-servern i båda virtuella nätverken.

    // 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
    };
    

    Ersätt värdet 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net med DNS-suffixet för det andra virtuella nätverket. Den här posten dirigerar begäranden om DNS-suffixet för fjärrnätverket till den anpassade DNS-koden i det nätverket.

  3. På de anpassade DNS-servrarna i båda de virtuella nätverken använder du följande text som innehållet i /etc/bind/named.conf.options filen:

    // 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 Ersätt värdena och 10.1.0.0/16 med IP-adressintervallen för dina virtuella nätverk. Med den här posten kan resurser i varje nätverk göra förfrågningar från DNS-servrarna.

    Alla begäranden som inte är för DNS-suffixen för de virtuella nätverken (till exempel microsoft.com) hanteras av den rekursiva Matcharen i Azure.

  4. Starta om Bind om du vill använda konfigurationen. Till exempel sudo service bind9 restart på båda DNS-servrarna.

När du har slutfört de här stegen kan du ansluta till resurser i det virtuella nätverket med hjälp av fullständigt kvalificerade domännamn (FQDN). Nu kan du installera HDInsight i det virtuella nätverket.

Testa inställningarna innan du distribuerar ett HDInsight-kluster

Innan du distribuerar klustret kan du kontrollera att dina många av dina nätverkskonfigurationsinställningar är korrekta genom att köra verktyget HDInsight Network Validator på en virtuell Azure Linux-dator i samma virtuella nätverk och undernät som det planerade klustret.

Nästa steg