Connettere HDInsight alla rete locale

Informazioni su come connettere HDInsight alla rete locale usando Reti virtuali di Azure e un gateway VPN. Questo documento fornisce le informazioni seguenti:

  • Come creare una rete virtuale di Azure che si connette alla rete locale.

  • Come abilitare la risoluzione dei nomi DNS tra la rete virtuale e la rete locale.

  • Come usare i gruppi di sicurezza di rete per limitare l'accesso Internet per HDInsight.

  • Come individuare le porte fornite da HDInsight nella rete virtuale.

Creare la configurazione della rete virtuale

Vedere i documenti seguenti per informazioni su come creare una rete virtuale di Azure connessa alla rete locale:

Configurare la risoluzione dei nomi

Per consentire a HDInsight e alle risorse nella rete aggiunta di comunicare in base al nome, è necessario eseguire queste operazioni:

  • Creare un server DNS personalizzato in Rete virtuale di Azure.

  • Configurare la rete virtuale per usare il server DNS personalizzato invece del resolver ricorsivo predefinito di Azure.

  • Configurare l'inoltro tra il server DNS personalizzato e il server DNS locale.

Questa configurazione consente il comportamento seguente:

  • Le richieste per i nomi di dominio completi con il suffisso DNS per la rete virtuale vengono inoltrate al server DNS personalizzato. Il server DNS personalizzato inoltra quindi le richieste al resolver ricorsivo di Azure, che restituisce l'indirizzo IP.

  • Tutte le altre richieste vengono inoltrate al server DNS locale. Anche le richieste di risorse Internet pubbliche, ad esempio microsoft.com, vengono inoltrate al server DNS locale per la risoluzione dei nomi.

Nel diagramma seguente le linee verdi sono richieste di risorse che terminano nel suffisso DNS della rete virtuale. Le linee blu sono richieste di risorse nella rete locale o nella rete Internet pubblica.

Diagramma della modalità di risoluzione delle richieste DNS nella configurazione usata in questo documento

Creare un server DNS personalizzato

Importante

È necessario creare e configurare il server DNS prima di installare HDInsight nella rete virtuale.

Per creare una VM Linux che usa il software DNS Bind, eseguire questa procedura:

Nota

Nella procedura seguente viene usato il portale di Azure per creare una macchina virtuale di Azure. Per altri modi per creare una macchina virtuale, vedere i documenti Creare una VM: interfaccia della riga di comando di Azure e Creare una VM: Azure PowerShell.

  1. Dal portale di Azure selezionare +, Calcolo e Ubuntu Server 16.04 LTS.

    Creare una macchina virtuale Ubuntu

  2. Nel pannello Informazioni di base immettere le informazioni seguenti:

    • Nome: nome descrittivo che identifica questa macchina virtuale. Ad esempio DNSProxy.
    • Nome utente: nome dell'account SSH.
    • Chiave pubblica SSH o Password: metodo di autenticazione per l'account SSH. Si consiglia di usare le chiavi pubbliche, che sono più sicure. Per altre informazioni, vedere il documento Creare e usare chiavi SSH per VM Linux.
    • Gruppo di risorse: selezionare Usa esistente e quindi selezionare il gruppo di risorse contenente la rete virtuale creata in precedenza.
    • Località: selezionare la stessa località della rete virtuale.

      Configurazione di base della macchina virtuale

      Lasciare i valori predefiniti per le altre voci e quindi selezionare OK.

  3. Nel pannello Scegli una dimensione selezionare la dimensione della VM. Per questa esercitazione selezionare l'opzione più piccola e a più basso costo. Per continuare, usare il pulsante Seleziona.

  4. Nel pannello Impostazioni immettere le informazioni seguenti:

    • Rete virtuale: selezionare la rete virtuale creata in precedenza.

    • Subnet: selezionare la subnet predefinita per la rete virtuale. Non selezionare la subnet usata dal gateway VPN.

    • Account di archiviazione di diagnostica: selezionare un account di archiviazione esistente o crearne uno nuovo.

      Impostazioni della rete virtuale

      Lasciare i valori predefiniti per le altre voci e quindi selezionare OK per continuare.

  5. Nel pannello Acquisto fare clic sul pulsante Acquisto per creare la macchina virtuale.

  6. Dopo che la macchina virtuale è stata creata, viene visualizzato il relativo pannello Panoramica. Nell'elenco a sinistra selezionare Proprietà. Salvare i valori di Indirizzo IP pubblico e Indirizzo IP privato. Verranno usati nella sezione successiva.

    Indirizzi IP pubblico e privato

Installare e configurare Bind (software DNS)

  1. Usare SSH per connettersi all'indirizzo IP pubblico della macchina virtuale. L'esempio seguente consente la connessione a una macchina virtuale all'indirizzo 40.68.254.142:

    ssh sshuser@40.68.254.142
    

    Sostituire sshuser con l'account utente SSH specificato durante la creazione del cluster.

    Nota

    È possibile ottenere l'utilità ssh in diversi modi. In Linux, Unix e macOS viene in genere fornita come parte del sistema operativo. Se si usa Windows, prendere in considerazione una delle opzioni seguenti:

  2. Per installare Bind, usare i comandi seguenti dalla sessione SSH:

    sudo apt-get update -y
    sudo apt-get install bind9 -y
    
  3. Per configurare Bind per l'inoltro delle richieste di risoluzione dei nomi al server DNS locale, usare il testo seguente come contenuto del file /etc/bind/named.conf.options:

     acl goodclients {
         10.0.0.0/16; # Replace with the IP address range of the virtual network
         10.1.0.0/16; # Replace with the IP address range of the on-premises network
         localhost;
         localnets;
     };
    
     options {
             directory "/var/cache/bind";
    
             recursion yes;
    
             allow-query { goodclients; };
    
             forwarders {
             192.168.0.1; # Replace with the IP address of the on-premises DNS server
             };
    
             dnssec-validation auto;
    
             auth-nxdomain no;    # conform to RFC1035
             listen-on { any; };
     };
    
    Importante

    Sostituire i valori nella sezione goodclients con l'intervallo di indirizzi IP della rete virtuale e della rete locale. Questa sezione definisce gli indirizzi da cui il server DNS accetta le richieste.

    Sostituire la voce 192.168.0.1 nella sezione forwarders con l'indirizzo IP del server DNS locale. Questa voce indirizza le richieste DNS al server DNS locale per la risoluzione.

    Per modificare questo file, usare il comando seguente:

    sudo nano /etc/bind/named.conf.options
    

    Per salvare il file, usare CTRL+X, Y e quindi INVIO.

  4. Dalla sessione SSH usare il comando seguente:

    hostname -f
    

    Il comando restituisce un valore simile al testo seguente:

     dnsproxy.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
    

    Il testo icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net è il suffisso DNS per la rete virtuale. Salvare questo valore, che verrà usato in un secondo momento.

  5. Per configurare Bind per la risoluzione dei nomi DNS per le risorse nella rete virtuale, usare il testo seguente come contenuto del file /etc/bind/named.conf.local:

     // Replace the following with the DNS suffix for your virtual network
     zone "icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net" {
         type forward;
         forwarders {168.63.129.16;}; # The Azure recursive resolver
     };
    
    Importante

    È necessario sostituire icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net con il suffisso DNS recuperato in precedenza.

    Per modificare questo file, usare il comando seguente:

    sudo nano /etc/bind/named.conf.local
    

    Per salvare il file, usare CTRL+X, Y e quindi INVIO.

  6. Per avviare Bind, usare il comando seguente:

    sudo service bind9 restart
    
  7. Per verificare che Bind riesca a risolvere i nomi delle risorse nella rete locale, usare i comandi seguenti:

    sudo apt install dnsutils
    nslookup dns.mynetwork.net 10.0.0.4
    
    Importante

    Sostituire dns.mynetwork.net con il nome di dominio completo (FQDN) di una risorsa nella rete locale.

    Sostituire 10.0.0.4 con l'indirizzo IP interno del server DNS personalizzato nella rete virtuale.

    La risposta visualizzata sarà simile al testo seguente:

     Server:         10.0.0.4
     Address:        10.0.0.4#53
    
     Non-authoritative answer:
     Name:   dns.mynetwork.net
     Address: 192.168.0.4
    

Configurare la rete virtuale per usare il server DNS personalizzato

Per configurare la rete virtuale per usare il server DNS personalizzato invece del resolver ricorsivo di Azure, seguire questa procedura:

  1. Nel portale di Azure selezionare la rete virtuale e quindi selezionare Server DNS.

  2. Selezionare Personalizzato e immettere l'indirizzo IP interno del server DNS personalizzato. Infine, selezionare Salva.

    Impostare il server DNS personalizzato per la rete

Configurare il server DNS locale

Nella sezione precedente è stato configurato il server DNS personalizzato per inoltrare le richieste al server DNS locale. È quindi necessario configurare il server DNS locale per inoltrare le richieste al server DNS personalizzato.

Per i passaggi specifici su come configurare il server DNS, vedere la documentazione per il prodotto server DNS. Cercare i passaggi su come configurare un server d'inoltro condizionale.

L'inoltro condizionale consente di inoltrare solo le richieste per un suffisso DNS specifico. In questo caso, è necessario configurare un server d'inoltro per il suffisso DNS della rete virtuale. Le richieste per questo suffisso devono essere inoltrate all'indirizzo IP del server DNS personalizzato.

Il testo seguente è un esempio di una configurazione di server d'inoltro condizionale per il software DNS Bind:

zone "icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net" {
    type forward;
    forwarders {10.0.0.4;}; # The custom DNS server's internal IP address
};

Per informazioni sull'uso di DNS in Windows Server 2016, vedere Add-DnsServerConditionalForwarderZone.

Dopo aver configurato il server DNS locale, è possibile usare nslookup dalla rete locale per verificare che sia possibile risolvere i nomi nella rete virtuale. Vedere l'esempio seguente:

nslookup dnsproxy.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net 196.168.0.4

Questo esempio usa il server DNS locale in 196.168.0.4 per risolvere il nome del server DNS personalizzato. Sostituire l'indirizzo IP con uno del server DNS locale. Sostituire l'indirizzo dnsproxy con il nome di dominio completo del server DNS personalizzato.

Facoltativo: Controllare il traffico di rete

È possibile usare gruppi di sicurezza di rete (NSG) o route definite dall'utente (UDR) per controllare il traffico di rete. Gli NSG permettono di filtrare il traffico in ingresso e in uscita e di consentire o negare il traffico. Le route definite dall'utente permettono di controllare il flusso di traffico tra le risorse nella rete virtuale, in Internet e nella rete locale.

Avviso

HDInsight richiede l'accesso in ingresso da indirizzi IP specifici nel cloud Azure e l'accesso in uscita senza restrizioni. Quando si usano NSG o route definite dall'utente per controllare il traffico, è necessario eseguire questa procedura:

  1. Trovare gli indirizzi IP per la località contenente la rete virtuale. Per un elenco di indirizzi IP necessari in base alla località, vedere Indirizzi IP richiesti.

  2. Consentire il traffico in ingresso dagli indirizzi IP.

    • NSG: consentire il traffico in ingresso sulla porta 443 da Internet.
    • Route definita dall'utente: impostare il tipo di Hop successivo della route su Internet.

Per un esempio di utilizzo di Azure PowerShell o dell'interfaccia della riga di comando di Azure per creare gruppi NSG, vedere il documento Estendere le funzionalità di HDInsight usando Rete virtuale di Azure.

Creare il cluster HDInsight

Avviso

È necessario configurare il server DNS personalizzato prima di installare HDInsight nella rete virtuale.

Seguire i passaggi riportati in Creare un cluster HDInsight tramite il portale di Azure per creare un cluster HDInsight.

Avviso
  • Durante la creazione del cluster, è necessario scegliere la posizione per la rete virtuale.

  • Nella sezione Impostazioni avanzate della configurazione, è necessario selezionare la rete virtuale e la subnet create in precedenza.

Connessione a HDInsight

La maggior parte delle documentazione in HDInsight presuppone che sia disponibile l'accesso al cluster tramite internet. Verificare ad esempio che sia possibile connettersi al cluster all'indirizzo https://CLUSTERNAME.azurehdinsight.net. Questo indirizzo usa il gateway pubblico, che non è disponibile se sono stati usati NSG o route definite dall'utente per limitare l'accesso da Internet.

Per connettersi direttamente a HDInsight attraverso la rete virtuale, seguire questa procedura:

  1. Per individuare i nomi di dominio completi interni dei nodi del cluster HDInsight, usare uno dei metodi seguenti:

    $resourceGroupName = "The resource group that contains the virtual network used with HDInsight"
    
    $clusterNICs = Get-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName | where-object {$_.Name -like "*node*"}
    
    $nodes = @()
    foreach($nic in $clusterNICs) {
        $node = new-object System.Object
        $node | add-member -MemberType NoteProperty -name "Type" -value $nic.Name.Split('-')[1]
        $node | add-member -MemberType NoteProperty -name "InternalIP" -value $nic.IpConfigurations.PrivateIpAddress
        $node | add-member -MemberType NoteProperty -name "InternalFQDN" -value $nic.DnsSettings.InternalFqdn
        $nodes += $node
    }
    $nodes | sort-object Type
    
    az network nic list --resource-group <resourcegroupname> --output table --query "[?contains(name,'node')].{NICname:name,InternalIP:ipConfigurations[0].privateIpAddress,InternalFQDN:dnsSettings.internalFqdn}"
    
  2. Per determinare la porta su cui un servizio è disponibile, vedere il documento Porte usate dai servizi Hadoop su HDInsight.

    Importante

    Alcuni servizi ospitati nei nodi head sono attivi solo in un nodo per volta. Se si prova ad accedere a un servizio in un nodo head e si verifica un errore, passare all'altro nodo head.

    Ambari, ad esempio, è attivo solo in un nodo head per volta. Se si prova ad accedere ad Ambari in un nodo head e viene restituito un errore 404, significa che è in esecuzione nell'altro nodo head.

Passaggi successivi