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 di pianificazione su:

  • Uso di HDInsight in una rete virtuale di Azure che si connette alla rete locale.
  • Configurazione della risoluzione dei nomi DNS tra la rete virtuale e la rete locale.
  • Configurazione dei gruppi di sicurezza di rete per limitare l'accesso Internet per HDInsight.
  • Porte fornite da HDInsight nella rete virtuale.

Panoramica

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

  1. Creare Rete virtuale di Azure.
  2. Creare un server DNS personalizzato in Rete virtuale di Azure.
  3. Configurare la rete virtuale per usare il server DNS personalizzato invece del resolver ricorsivo predefinito di Azure.
  4. Configurare l'inoltro tra il server DNS personalizzato e il server DNS locale.

Queste configurazioni consentono 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.

Diagram of how DNS requests are resolved in the configuration.

Prerequisiti

Creare una configurazione di rete virtuale

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

Creare un server DNS personalizzato

Importante

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

Questa procedura usa il portale di Azure per creare una macchina virtuale di Azure. Per informazioni su altri modi per creare una macchina virtuale, vedere Creare una VM: interfaccia della riga di comando di Azure e Creare una VM: Azure PowerShell. Per creare una VM Linux che usa il software DNS Bind, eseguire questa procedura:

  1. Accedere al portale di Azure.

  2. Nel menu in alto selezionare + Crea una risorsa.

    Create an Ubuntu virtual machine.

  3. Selezionare >Calcolo macchina virtuale per passare alla pagina Crea macchina virtuale.

  4. Nella scheda Informazioni di base immettere le informazioni seguenti:

    Campo Valore
    Subscription Selezionare la sottoscrizione appropriata.
    Gruppo di risorse Selezionare il gruppo di risorse che contiene la rete virtuale creata in precedenza.
    Virtual machine name Immettere un nome descrittivo che identifica la macchina virtuale. In questo esempio viene usato DNSProxy.
    Area Selezionare la stessa area della rete virtuale creata in precedenza. Non tutte le dimensioni di macchina virtuale sono disponibili in tutte le aree.
    Opzioni di disponibilità Selezionare il livello di disponibilità desiderato. Azure offre una gamma di opzioni per la gestione della disponibilità e della resilienza delle applicazioni. Progettando una soluzione per l'uso di macchine virtuali replicate in zone di disponibilità o set di disponibilità è possibile proteggere le app e i dati da eventuali interruzioni del data center ed eventi di manutenzione. Im questo esempio viene usata l'opzione La ridondanza dell'infrastruttura non è richiesta.
    Immagine Lasciare Ubuntu Server 18.04 LTS.
    Tipo di autenticazione Password o chiave pubblica SSH: metodo di autenticazione per l'account SSH. È consigliabile usare chiavi pubbliche, perché sono più sicure. In questo esempio viene usata la password. Per altre informazioni, vedere il documento Creare e usare chiavi SSH per VM Linux.
    Nome utente Immettere il nome utente dell'amministratore della macchina virtuale. In questo esempio viene usato sshuser.
    Password o chiave pubblica SSH Il campo disponibile è determinato dall'opzione selezionata per Tipo di autenticazione. Immettere il valore appropriato.
    Porte in ingresso pubbliche Selezionare Consenti porte selezionate. Selezionare quindi SSH (22) dall'elenco a discesa Seleziona porte in ingresso.

    Virtual machine basic configuration.

    Per le altre voci lasciare i valori predefiniti e quindi selezionare la scheda Rete.

  5. Nella scheda Rete immettere le informazioni seguenti:

    Campo Valore
    Rete virtuale Selezionare la rete virtuale creata in precedenza.
    Subnet Selezionare la subnet predefinita per la rete virtuale creata in precedenza. Non selezionare la subnet usata dal gateway VPN.
    IP pubblico Usare il valore inserito automaticamente.

    HDInsight Virtual network settings.

    Per le altre voci lasciare i valori predefiniti e quindi selezionare la scheda Rivedi e crea.

  6. Nella scheda Rivedi e crea selezionare Crea per creare la macchina virtuale.

Verificare gli indirizzi IP

Dopo aver creato la macchina virtuale, si riceverà una notifica Distribuzione completata con un pulsante Vai alla risorsa . Selezionare Vai alla risorsa per accedere alla nuova macchina virtuale. Nella visualizzazione predefinita della nuova macchina virtuale seguire questa procedura per identificare gli indirizzi IP associati:

  1. In Impostazioni selezionare Proprietà.

  2. Prendere nota dei valori specificati per ETICHETTA INDIRIZZO IP PUBBLICO/NOME DNS e INDIRIZZO IP PRIVATO per usarli in seguito.

    Public and private IP addresses.

Installare e configurare Bind (software DNS)

  1. Usare SSH per connettersi all'indirizzo IP pubblico della macchina virtuale. Sostituire sshuser con l'account utente SSH specificato durante la creazione 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
    
  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 inoltrare le richieste di risoluzione dei nomi al server DNS locale, usare il testo seguente come contenuto del /etc/bind/named.conf.options file:

    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, perché 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 l'uso del server DNS personalizzato

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

  1. Dal menu a sinistra passare a Tutti i servizi>Rete>Reti virtuali.

  2. Selezionare la rete virtuale dall'elenco, che aprirà la visualizzazione predefinita per la rete virtuale.

  3. Nella visualizzazione predefinita, in Impostazioni, selezionare Server DNS.

  4. Selezionare Personalizzato e in INDIRIZZO IP PRIVATO immettere il valore del server DNS personalizzato.

  5. Seleziona Salva.

    Set the custom DNS server for the network.

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. Per gli indirizzi IP identificati nel passaggio 1, consentire il traffico in ingresso da tali indirizzi.

    • Se si usa un gruppo di sicurezza di rete: consentire il traffico in ingresso sulla porta 443 per gli indirizzi IP.
    • Se si usa la route definita dall'utente: impostare il tipo hop successivo della route su Internet per gli indirizzi IP.

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 della documentazione in HDInsight presuppone che sia disponibile l'accesso al cluster tramite Internet. 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 gruppi di sicurezza di rete o route definite dall'utente per limitare l'accesso da Internet.

Parte della documentazione fa riferimento a headnodehost anche per la connessione al cluster da una sessione SSH. Questo indirizzo è disponibile solo dai nodi all'interno di un cluster e non è utilizzabile nei client connessi tramite la rete virtuale.

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-AzNetworkInterface -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 Apache Hadoop su HDInsight.

    Importante

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

    Apache 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