Delen via


Virtuele netwerken maken voor Azure HDInsight-clusters

Dit artikel bevat voorbeelden en codevoorbeelden voor het maken en configureren van virtuele Azure-netwerken. Gebruiken met Azure HDInsight-clusters. Gedetailleerde voorbeelden van het maken van netwerkbeveiligingsgroepen (NSG's) en het configureren van DNS worden weergegeven.

Zie Een virtueel netwerk plannen voor Azure HDInsight voor achtergrondinformatie over het gebruik van virtuele netwerken met Azure HDInsight.

Vereisten voor codevoorbeelden en voorbeelden

Voordat u een van de codevoorbeelden in dit artikel uitvoert, hebt u inzicht in TCP/IP-netwerken. Als u niet bekend bent met TCP/IP-netwerken, raadpleegt u iemand voordat u wijzigingen aanbrengt in productienetwerken.

Andere vereisten voor de voorbeelden in dit artikel bevatten de volgende items:

  • Als u PowerShell gebruikt, moet u de AZ-module installeren.
  • Als u Azure CLI wilt gebruiken en deze nog niet hebt geïnstalleerd, raadpleegt u De Azure CLI installeren.

Belangrijk

Als u stapsgewijze instructies zoekt voor het verbinden van HDInsight met uw on-premises netwerk met behulp van een virtueel Azure-netwerk, raadpleegt u Hoe u HDInsight verbindt met uw on-premises netwerk.

Voorbeeld: netwerkbeveiligingsgroepen met HDInsight

In de voorbeelden in deze sectie ziet u hoe u regels voor netwerkbeveiligingsgroepen maakt. Met de regels kan HDInsight communiceren met de Azure-beheerservices. Voordat u de voorbeelden gebruikt, past u de IP-adressen aan zodat deze overeenkomen met de IP-adressen voor de Azure-regio die u gebruikt. U vindt deze informatie in IP-adressen van HDInsight-beheer.

Azure Resource Manager-sjabloon

Met de volgende Resource Manager-sjabloon maakt u een virtueel netwerk dat inkomend verkeer beperkt, maar verkeer toestaat van de IP-adressen die zijn vereist voor HDInsight. Met deze sjabloon maakt u ook een HDInsight-cluster in het virtuele netwerk.

Azure PowerShell

Gebruik het volgende PowerShell-script om een virtueel netwerk te maken dat binnenkomend verkeer beperkt en verkeer van de IP-adressen voor de regio Europa - noord toestaat.

Belangrijk

Wijzig de IP-adressen voor hdirule1 en hdirule2 in dit voorbeeld zodat deze overeenkomen met de Azure-regio die u gebruikt. U vindt deze informatie IP-adressen voor HDInsight-beheer.

$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

In dit voorbeeld ziet u hoe u regels toevoegt om inkomend verkeer op de vereiste IP-adressen toe te staan. Het bevat geen regel om binnenkomende toegang van andere bronnen te beperken. De volgende code laat zien hoe u SSH-toegang vanaf internet inschakelt:

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

Gebruik de volgende stappen om een virtueel netwerk te maken dat inkomend verkeer beperkt, maar verkeer toestaat van de IP-adressen die vereist zijn voor HDInsight.

  1. Gebruik de volgende opdracht om een nieuwe netwerkbeveiligingsgroep met de naam hdisecurete maken. Vervang RESOURCEGROUP door de resourcegroep die het virtuele Azure-netwerk bevat. Vervang LOCATION door de locatie (regio) waarin de groep is gemaakt.

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

    Zodra de groep is gemaakt, ontvangt u informatie over de nieuwe groep.

  2. Gebruik het volgende om regels toe te voegen aan de nieuwe netwerkbeveiligingsgroep die binnenkomende communicatie op poort 443 vanuit de Azure HDInsight-status- en beheerservice toestaat. Vervang RESOURCEGROUP door de naam van de resourcegroep die het virtuele Azure-netwerk bevat.

    Belangrijk

    Wijzig de IP-adressen voor hdirule1 en hdirule2 in dit voorbeeld zodat deze overeenkomen met de Azure-regio die u gebruikt. U vindt deze informatie in IP-adressen van HDInsight-beheer.

    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. Gebruik de volgende opdracht om de unieke id voor deze netwerkbeveiligingsgroep op te halen:

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

    Met deze opdracht wordt een waarde geretourneerd die lijkt op de volgende tekst:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. Gebruik de volgende opdracht om de netwerkbeveiligingsgroep toe te passen op een subnet. Vervang de GUID en RESOURCEGROUP waarden door de waarden die zijn geretourneerd uit de vorige stap. Vervang en SUBNETNAME door VNETNAME de naam van het virtuele netwerk en de subnetnaam die u wilt maken.

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

    Zodra deze opdracht is voltooid, kunt u HDInsight installeren in het virtuele netwerk.

Met deze stappen opent u alleen toegang tot de HDInsight-status- en beheerservice in de Azure-cloud. Alle andere toegang tot het HDInsight-cluster van buiten het virtuele netwerk wordt geblokkeerd. Als u toegang wilt inschakelen van buiten het virtuele netwerk, moet u meer regels voor netwerkbeveiligingsgroepen toevoegen.

De volgende code laat zien hoe u SSH-toegang vanaf internet inschakelt:

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"

Voorbeeld: DNS-configuratie

Naamomzetting tussen een virtueel netwerk en een verbonden on-premises netwerk

In dit voorbeeld worden de volgende veronderstellingen weergegeven:

  • U hebt een virtueel Azure-netwerk dat is verbonden met een on-premises netwerk met behulp van een VPN-gateway.

  • Op de aangepaste DNS-server in het virtuele netwerk wordt Linux of Unix uitgevoerd als besturingssysteem.

  • Bind is geïnstalleerd op de aangepaste DNS-server.

Op de aangepaste DNS-server in het virtuele netwerk:

  1. Gebruik Azure PowerShell of Azure CLI om het DNS-achtervoegsel van het virtuele netwerk te vinden:

    Vervang RESOURCEGROUP door de naam van de resourcegroep die het virtuele netwerk bevat en voer vervolgens de opdracht in:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Gebruik op de aangepaste DNS-server voor het virtuele netwerk de volgende tekst als de inhoud van het /etc/bind/named.conf.local bestand:

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

    Vervang de 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net waarde door het DNS-achtervoegsel van uw virtuele netwerk.

    Met deze configuratie worden alle DNS-aanvragen voor het DNS-achtervoegsel van het virtuele netwerk doorgestuurd naar de recursieve resolver van Azure.

  3. Gebruik op de aangepaste DNS-server voor het virtuele netwerk de volgende tekst als de inhoud van het /etc/bind/named.conf.options bestand:

    // 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; };
    };
    
    • Vervang de 10.0.0.0/16 waarde door het IP-adresbereik van uw virtuele netwerk. Deze vermelding staat adressen voor naamomzettingsaanvragen binnen dit bereik toe.

    • Voeg het IP-adresbereik van het on-premises netwerk toe aan de acl goodclients { ... } sectie. vermelding staat aanvragen voor naamomzetting van resources in het on-premises netwerk toe.

    • Vervang de waarde 192.168.0.1 door het IP-adres van uw on-premises DNS-server. Met deze vermelding worden alle andere DNS-aanvragen doorgestuurd naar de on-premises DNS-server.

  4. Start Bind opnieuw om de configuratie te gebruiken. Bijvoorbeeld: sudo service bind9 restart.

  5. Voeg een voorwaardelijke doorstuurserver toe aan de on-premises DNS-server. Configureer de voorwaardelijke doorstuurserver voor het verzenden van aanvragen voor het DNS-achtervoegsel van stap 1 naar de aangepaste DNS-server.

    Notitie

    Raadpleeg de documentatie voor uw DNS-software voor specifieke informatie over het toevoegen van een voorwaardelijke doorstuurserver.

Nadat u deze stappen hebt voltooid, kunt u verbinding maken met resources in beide netwerken met behulp van FQDN (Fully Qualified Domain Names). U kunt HDInsight nu installeren in het virtuele netwerk.

Naamomzetting tussen twee verbonden virtuele netwerken

In dit voorbeeld worden de volgende veronderstellingen weergegeven:

  • U hebt twee virtuele Azure-netwerken die zijn verbonden met een VPN-gateway of peering.

  • Op de aangepaste DNS-server in beide netwerken wordt Linux of Unix uitgevoerd als besturingssysteem.

  • Bind wordt geïnstalleerd op de aangepaste DNS-servers.

  1. Gebruik Azure PowerShell of Azure CLI om het DNS-achtervoegsel van beide virtuele netwerken te vinden:

    Vervang RESOURCEGROUP door de naam van de resourcegroep die het virtuele netwerk bevat en voer vervolgens de opdracht in:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Gebruik de volgende tekst als de inhoud van het /etc/bind/named.config.local bestand op de aangepaste DNS-server. Breng deze wijziging aan op de aangepaste DNS-server in beide virtuele netwerken.

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

    Vervang de 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net waarde door het DNS-achtervoegsel van het andere virtuele netwerk. Met deze invoer worden aanvragen voor het DNS-achtervoegsel van het externe netwerk gerouteerd naar de aangepaste DNS in dat netwerk.

  3. Gebruik op de aangepaste DNS-servers in beide virtuele netwerken de volgende tekst als de inhoud van het /etc/bind/named.conf.options bestand:

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

    Vervang de 10.0.0.0/16 en 10.1.0.0/16 waarden door de IP-adresbereiken van uw virtuele netwerken. Met deze vermelding kunnen resources in elk netwerk aanvragen van de DNS-servers indienen.

    Aanvragen die niet voor de DNS-achtervoegsels van de virtuele netwerken (bijvoorbeeld microsoft.com) zijn, worden verwerkt door de recursieve resolver van Azure.

  4. Start Bind opnieuw om de configuratie te gebruiken. Bijvoorbeeld op sudo service bind9 restart beide DNS-servers.

Nadat u deze stappen hebt voltooid, kunt u verbinding maken met resources in het virtuele netwerk met behulp van volledig gekwalificeerde domeinnamen (FQDN). U kunt HDInsight nu installeren in het virtuele netwerk.

Uw instellingen testen voordat u een HDInsight-cluster implementeert

Voordat u uw cluster implementeert, kunt u controleren of veel van uw netwerkconfiguratie-instellingen juist zijn door het hulpprogramma HDInsight Network Validator uit te voeren op een virtuele Azure Linux-machine in hetzelfde virtuele netwerk en subnet als het geplande cluster.

Volgende stappen