Ligar o HDInsight à sua rede no local

Saiba como conectar o HDInsight à sua rede local usando as Redes Virtuais do Azure e um gateway VPN. Este documento fornece informações de planeamento sobre:

  • Usando o HDInsight em uma Rede Virtual do Azure que se conecta à sua rede local.
  • Configurar a resolução de nomes DNS entre a rede virtual e a rede local.
  • Configurar grupos de segurança de rede para restringir o acesso à Internet ao HDInsight.
  • Portas fornecidas pelo HDInsight na rede virtual.

Descrição geral

Para permitir que o HDInsight e os recursos na rede ingressada se comuniquem pelo nome, você deve executar as seguintes ações:

  1. Crie a Rede Virtual do Azure.
  2. Crie um servidor DNS personalizado na Rede Virtual do Azure.
  3. Configure a rede virtual para usar o servidor DNS personalizado em vez do Resolvedor Recursivo do Azure padrão.
  4. Configure o encaminhamento entre o servidor DNS personalizado e o servidor DNS local.

Essas configurações permitem o seguinte comportamento:

  • As solicitações de nomes de domínio totalmente qualificados que têm o sufixo DNS para a rede virtual são encaminhadas para o servidor DNS personalizado. Em seguida, o servidor DNS personalizado encaminha essas solicitações para o Resolvedor Recursivo do Azure, que retorna o endereço IP.
  • Todas as outras solicitações são encaminhadas para o servidor DNS local. Até mesmo solicitações de recursos públicos da Internet, como microsoft.com, são encaminhadas para o servidor DNS local para resolução de nomes.

No diagrama a seguir, linhas verdes são solicitações de recursos que terminam no sufixo DNS da rede virtual. As linhas azuis são pedidos de recursos na rede local ou na Internet pública.

Diagram of how DNS requests are resolved in the configuration.

Pré-requisitos

Criar configuração de rede virtual

Use os seguintes documentos para saber como criar uma Rede Virtual do Azure conectada à sua rede local:

Criar servidor DNS personalizado

Importante

Você deve criar e configurar o servidor DNS antes de instalar o HDInsight na rede virtual.

Estas etapas usam o portal do Azure para criar uma Máquina Virtual do Azure. Para outras maneiras de criar uma máquina virtual, consulte Criar VM - CLI do Azure e Criar VM - Azure PowerShell. Para criar uma VM Linux que usa o software Bind DNS, use as seguintes etapas:

  1. Inicie sessão no portal do Azure.

  2. No menu superior, selecione + Criar um recurso.

    Create an Ubuntu virtual machine.

  3. Selecione Computar>máquina virtual para ir para a página Criar uma máquina virtual.

  4. Na guia Noções básicas, insira as seguintes informações:

    Campo Value
    Subscrição Selecione sua assinatura apropriada.
    Grupo de recursos Selecione o grupo de recursos que contém a rede virtual criada anteriormente.
    Virtual machine name Insira um nome amigável que identifique essa máquina virtual. Este exemplo usa DNSProxy.
    País/Região Selecione a mesma região da rede virtual criada anteriormente. Nem todos os tamanhos de VM estão disponíveis em todas as regiões.
    Opções de disponibilidade Selecione o nível de disponibilidade desejado. O Azure oferece uma variedade de opções para gerenciar a disponibilidade e a resiliência de seus aplicativos. Arquitete sua solução para usar VMs replicadas em zonas de disponibilidade ou conjuntos de disponibilidade para proteger seus aplicativos e dados contra interrupções do datacenter e eventos de manutenção. Este exemplo usa Nenhuma redundância de infraestrutura necessária.
    Imagem Deixe no Ubuntu Server 18.04 LTS.
    Authentication type Senha ou chave pública SSH: O método de autenticação para a conta SSH. Recomendamos o uso de chaves públicas, pois elas são mais seguras. Este exemplo usa Password. Para obter mais informações, consulte o documento Criar e usar chaves SSH para VMs Linux.
    User name Insira o nome de usuário do administrador para a VM. Este exemplo usa sshuser.
    Senha ou chave pública SSH O campo disponível é determinado pela sua escolha para o tipo de autenticação. Insira o valor apropriado.
    Portas de entrada públicas Selecione Permitir portas selecionadas. Em seguida, selecione SSH (22) na lista suspensa Selecionar portas de entrada.

    Virtual machine basic configuration.

    Deixe outras entradas nos valores padrão e selecione a guia Rede .

  5. Na guia Rede, insira as seguintes informações:

    Campo Value
    Rede virtual Selecione a rede virtual que você criou anteriormente.
    Sub-rede Selecione a sub-rede padrão para a rede virtual que você criou anteriormente. Não selecione a sub-rede usada pelo gateway VPN.
    IP público Use o valor preenchido automaticamente.

    HDInsight Virtual network settings.

    Deixe outras entradas nos valores padrão e selecione Revisar + criar.

  6. Na guia Revisão + criação, selecione Criar para criar a máquina virtual.

Rever endereços IP

Depois que a máquina virtual tiver sido criada, você receberá uma notificação de implantação bem-sucedida com um botão Ir para recurso . Selecione Ir para recurso para ir para sua nova máquina virtual. A partir da vista predefinida para a sua nova máquina virtual, siga estes passos para identificar os endereços IP associados:

  1. Em Configurações, selecione Propriedades.

  2. Observe os valores para PUBLIC IP ADDRESS/DNS NAME LABEL e PRIVATE IP ADDRESS para uso posterior.

    Public and private IP addresses.

Instalar e configurar o Bind (software DNS)

  1. Use SSH para se conectar ao endereço IP público da máquina virtual. Substitua sshuser pela conta de usuário SSH especificada ao criar a VM. O exemplo a seguir se conecta a uma máquina virtual em 40.68.254.142:

    ssh sshuser@40.68.254.142
    
  2. Para instalar o Bind, use os seguintes comandos da sessão SSH:

    sudo apt-get update -y
    sudo apt-get install bind9 -y
    
  3. Para configurar Bind para encaminhar solicitações de resolução de nomes para seu servidor DNS local, use o seguinte texto como o conteúdo do /etc/bind/named.conf.options arquivo:

    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

    Substitua os goodclients valores na seção pelo intervalo de endereços IP da rede virtual e da rede local. Esta seção define os endereços dos quais esse servidor DNS aceita solicitações.

    Substitua forwarders a 192.168.0.1 entrada na seção pelo endereço IP do seu servidor DNS local. Essa entrada roteia solicitações DNS para o servidor DNS local para resolução.

    Para editar esse arquivo, use o seguinte comando:

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

    Para guardar o ficheiro, utilize Ctrl+X, Y e, em seguida , Enter.

  4. Na sessão SSH, use o seguinte comando:

    hostname -f
    

    Este comando retorna um valor semelhante ao seguinte texto:

    dnsproxy.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
    

    O icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net texto é o sufixoDNS para esta rede virtual. Guarde este valor, tal como é utilizado mais tarde.

  5. Para configurar Bind para resolver nomes DNS para recursos dentro da rede virtual, use o seguinte texto como o conteúdo do /etc/bind/named.conf.local arquivo:

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

    Você deve substituir o icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net pelo sufixo DNS recuperado anteriormente.

    Para editar esse arquivo, use o seguinte comando:

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

    Para guardar o ficheiro, utilize Ctrl+X, Y e, em seguida , Enter.

  6. Para iniciar Bind, use o seguinte comando:

    sudo service bind9 restart
    
  7. Para verificar se a associação pode resolver os nomes dos recursos em sua rede local, use os seguintes comandos:

    sudo apt install dnsutils
    nslookup dns.mynetwork.net 10.0.0.4
    

    Importante

    Substitua dns.mynetwork.net pelo nome de domínio totalmente qualificado (FQDN) de um recurso em sua rede local.

    Substitua 10.0.0.4 pelo endereço IP interno do seu servidor DNS personalizado na rede virtual.

    A resposta é semelhante ao seguinte texto:

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

Configurar a rede virtual para usar o servidor DNS personalizado

Para configurar a rede virtual para usar o servidor DNS personalizado em vez do resolvedor recursivo do Azure, use as seguintes etapas do portal do Azure:

  1. No menu à esquerda, navegue até Todos os serviços>de rede>Redes virtuais.

  2. Selecione sua rede virtual na lista, o que abrirá a visualização padrão para sua rede virtual.

  3. Na vista predefinida, em Definições, selecione Servidores DNS.

  4. Selecione Personalizado e insira o ENDEREÇO IP PRIVADO do servidor DNS personalizado.

  5. Selecione Guardar.

    Set the custom DNS server for the network.

Configurar servidor DNS local

Na seção anterior, você configurou o servidor DNS personalizado para encaminhar solicitações para o servidor DNS local. Em seguida, você deve configurar o servidor DNS local para encaminhar solicitações para o servidor DNS personalizado.

Para obter etapas específicas sobre como configurar o servidor DNS, consulte a documentação do software do servidor DNS. Procure as etapas sobre como configurar um encaminhador condicional.

Um encaminhamento condicional encaminha apenas solicitações para um sufixo DNS específico. Nesse caso, você deve configurar um encaminhador para o sufixo DNS da rede virtual. As solicitações para esse sufixo devem ser encaminhadas para o endereço IP do servidor DNS personalizado.

O texto a seguir é um exemplo de uma configuração de encaminhador condicional para o software DNS de ligação :

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

Para obter informações sobre como usar o DNS no Windows Server 2016, consulte a documentação Add-DnsServerConditionalForwarderZone...

Depois de configurar o servidor DNS local, você pode usar nslookup a partir da rede local para verificar se pode resolver nomes na rede virtual. O exemplo a seguir

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

Este exemplo usa o servidor DNS local em 196.168.0.4 para resolver o nome do servidor DNS personalizado. Substitua o endereço IP pelo do servidor DNS local. Substitua o dnsproxy endereço pelo nome de domínio totalmente qualificado do servidor DNS personalizado.

Opcional: Controlar o tráfego de rede

Você pode usar grupos de segurança de rede (NSG) ou rotas definidas pelo usuário (UDR) para controlar o tráfego de rede. Os NSGs permitem filtrar o tráfego de entrada e saída e permitir ou negar o tráfego. As UDRs permitem controlar como o tráfego flui entre recursos na rede virtual, na Internet e na rede local.

Aviso

O HDInsight requer acesso de entrada de endereços IP específicos na nuvem do Azure e acesso de saída irrestrito. Ao usar NSGs ou UDRs para controlar o tráfego, você deve executar as seguintes etapas:

  1. Localize os endereços IP para o local que contém sua rede virtual. Para obter uma lista de IPs necessários por local, consulte Endereços IP necessários.

  2. Para os endereços IP identificados na etapa 1, permita o tráfego de entrada desses endereços IP.

    • Se você estiver usando o NSG: permita o tráfego de entrada na porta 443 para os endereços IP.
    • Se você estiver usando UDR: defina o tipo Next Hop da rota para Internet para os endereços IP.

Para obter um exemplo de como usar o Azure PowerShell ou a CLI do Azure para criar NSGs, consulte o documento Estender o HDInsight com Redes Virtuais do Azure.

Criar o cluster HDInsight

Aviso

Você deve configurar o servidor DNS personalizado antes de instalar o HDInsight na rede virtual.

Use as etapas em Criar um cluster HDInsight usando o documento do portal do Azure para criar um cluster HDInsight.

Aviso

  • Durante a criação do cluster, você deve escolher o local que contém sua rede virtual.
  • Na parte Configurações avançadas da configuração, você deve selecionar a rede virtual e a sub-rede que você criou anteriormente.

Conectando-se ao HDInsight

A maioria da documentação do HDInsight pressupõe que você tenha acesso ao cluster pela Internet. Por exemplo, que pode ligar ao cluster em https://CLUSTERNAME.azurehdinsight.net. Esse endereço usa o gateway público, que não estará disponível se você tiver usado NSGs ou UDRs para restringir o acesso da Internet.

Algumas documentações também fazem referência headnodehost ao conectar-se ao cluster a partir de uma sessão SSH. Esse endereço só está disponível a partir de nós dentro de um cluster e não pode ser usado em clientes conectados pela rede virtual.

Para se conectar diretamente ao HDInsight por meio da rede virtual, use as seguintes etapas:

  1. Para descobrir os nomes de domínio internos totalmente qualificados dos nós de cluster HDInsight, use um dos seguintes métodos:

    $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. Para determinar a porta na qual um serviço está disponível, consulte o documento Portas usadas pelos serviços Apache Hadoop no HDInsight .

    Importante

    Alguns serviços hospedados nos nós principais estão ativos apenas em um nó de cada vez. Se você tentar acessar um serviço em um nó principal e ele falhar, alterne para o outro nó principal.

    Por exemplo, o Apache Ambari só está ativo em um nó principal de cada vez. Se você tentar acessar o Ambari em um nó principal e ele retornar um erro 404, ele estará sendo executado no outro nó principal.

Próximos passos