Conexión de HDInsight a la red local
Obtenga información sobre cómo conectar HDInsight a la red local mediante instancias de Azure Virtual Network y una instancia de VPN Gateway. En este documento se brinda información de planeación sobre:
- Uso de HDInsight en una instancia de Azure Virtual Network que se conecta con la red local.
- Configuración de resolución de nombres DNS entre la red virtual y la red local.
- Configuración de grupos de seguridad de red para restringir acceso a HDInsight a través de Internet.
- Puertos que HDInsight proporciona en la red virtual.
Información general
Para permitir que HDInsight y los recursos de la red combinada se comuniquen por nombre, debe realizar las acciones siguientes:
- Cree una instancia de Azure Virtual Network.
- Cree un servidor DNS personalizado en la instancia de Azure Virtual Network.
- Configure la red virtual para que use el servidor DNS personalizado en lugar de la resolución recursiva de Azure predeterminada.
- Configure el reenvío entre el servidor DNS personalizado y el servidor DNS local.
Estas configuraciones permiten que se produzca el siguiente comportamiento:
- Las solicitudes de nombres de dominio completos con el sufijo DNS para la red virtual se reenvían al servidor DNS personalizado. Entonces, el servidor DNS personalizado reenvía estas solicitudes a la resolución recursiva de Azure, que devuelve la dirección IP.
- Todas las otras solicitudes se reenvían al servidor DNS local. Incluso las solicitudes de recursos de Internet, como microsoft.com, se reenvían al servidor DNS local para la resolución de nombres.
En el diagrama siguiente, las líneas verdes son solicitudes de recursos que finalizan en el sufijo DNS de la red virtual. Las líneas azules son solicitudes de recursos en la red local o en Internet.
Requisitos previos
- Un cliente SSH. Para más información, consulte Conexión a través de SSH con HDInsight (Apache Hadoop).
- Si usa PowerShell, necesitará el Módulo AZ.
- Si quiere usar la CLI de Azure y todavía no la ha instalado, consulte Instalación de la CLI de Azure.
Creación de la configuración de la red virtual
Use los documentos siguientes para obtener información sobre cómo crear una instancia de Azure Virtual Network conectada a la red local:
Creación de un servidor DNS personalizado
Importante
Debe crear y configurar el servidor DNS antes de instalar HDInsight en la red virtual.
Los pasos siguientes usan Azure Portal para crear una instancia de Azure Virtual Machine. Para conocer otras formas de crear una máquina virtual, consulte los documentos Creación de una máquina virtual: CLI de Azure y Creación de una máquina virtual: Azure PowerShell. Para crear una máquina virtual Linux que usa el software DNS Bind, use los pasos siguientes:
Inicie sesión en Azure Portal.
En el menú superior, seleccione + Crear un recurso.
Seleccione Proceso>Virtual machine (Máquina virtual) para ir a la página Crear una máquina virtual.
Introduzca la siguiente información de la pestaña Aspectos básicos:
Campo Value Subscription Seleccione una suscripción adecuada. Resource group Seleccione el grupo de recursos que contiene la red virtual que ha creado antes. Nombre de la máquina virtual Escriba un nombre descriptivo que identifique esta máquina virtual. En este ejemplo se utiliza DNSProxy. Region Seleccione la misma región que la de la red virtual que creó anteriormente. No todos los tamaños de máquina virtual están disponibles en todas las regiones. Opciones de disponibilidad Seleccione el nivel de disponibilidad que desee. Azure ofrece varias opciones para administrar la disponibilidad y resistencia de las aplicaciones. Diseñe su solución para que use las máquinas virtuales replicadas en Availability Zones o en conjuntos de disponibilidad para proteger sus aplicaciones y datos de las interrupciones del centro de datos y de los eventos de mantenimiento. En este ejemplo se usa No se requiere redundancia de la infraestructura. Imagen Déjelo en Ubuntu Server 18.04 LTS. Tipo de autenticación Clave pública SSH o Contraseña: método de autenticación de la cuenta SSH. Se recomienda usar claves públicas, porque son más seguras. Este ejemplo utiliza Contraseña. Para más información, consulte el documento Creación y uso de claves SSH para máquinas virtuales Linux. Nombre de usuario Escriba el nombre de usuario del administrador de la máquina virtual. En el ejemplo se utiliza sshuser. Contraseña o clave pública SSH El campo disponible lo determina la opción elegida en Tipo de autenticación. Escriba el valor adecuado. Puertos de entrada públicos Seleccione Permitir los puertos seleccionados. A continuación, seleccione SSH (22) en la lista desplegable Seleccionar puertos de entrada. Deje otras entradas con los valores predeterminados y seleccione la pestaña Redes.
Introduzca la siguiente información de la pestaña Redes:
Campo Value Virtual network Seleccione la red virtual que ha creado antes. Subnet Seleccione la subred predeterminada de la red virtual que ha creado antes. No seleccione la subred que la puerta de enlace de VPN usa. Dirección IP pública Use el valor que se rellena automáticamente. Deje otras entradas con los valores predeterminados y seleccione Revisar y crear .
En la pestaña Revisar y crear, seleccione Crear para crear la máquina virtual.
Examen de direcciones IP
Una vez que se haya creado la máquina virtual, recibirá una notificación de Implementación correcta con un botón Ir al recurso. Seleccione Ir al recurso para ir a la nueva máquina virtual. En la vista predeterminada de la nueva máquina virtual, siga estos pasos para identificar las direcciones IP asociadas:
En Configuración, seleccione Propiedades.
Anote los valores de ETIQUETA CDE NOMBRE DNS O DIRECCIÓN IP PÚBLICA y DIRECCIÓN IP PRIVADA para su uso posterior.
Instalación y configuración de Bind (software DNS)
Use SSH para conectarse a la dirección IP pública de la máquina virtual. Reemplace
sshuser
por la cuenta de usuario SSH que especificó cuando creó la máquina virtual. En el ejemplo siguiente, se realiza una conexión a una máquina virtual en 40.68.254.142:ssh sshuser@40.68.254.142
Para instalar Bind, use los comandos siguientes en la sesión de SSH:
sudo apt-get update -y sudo apt-get install bind9 -y
Para configurar Bind a fin de reenviar las solicitudes de resolución de nombres al servidor DNS local, use el texto siguiente como contenido del archivo
/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
Reemplace los valores de la sección
goodclients
por el intervalo de direcciones IP de la red virtual y la red local. En esta sección se definen las direcciones desde las cuales el servidor DNS acepta solicitudes.Reemplace la entrada
192.168.0.1
en la secciónforwarders
por la dirección IP del servidor DNS local. Esta entrada enruta las solicitudes DNS al servidor DNS local para la resolución.Para editar el archivo, use el comando siguiente:
sudo nano /etc/bind/named.conf.options
Para guardar el archivo, use Ctrl+X, Y y, luego, Entrar.
En la sesión de SSH, use el comando siguiente:
hostname -f
Este comando devuelve un valor similar al siguiente texto:
dnsproxy.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
El texto
icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
está en el sufijo DNS de esta red virtual. Guarde este valor, porque se utiliza más adelante.Para configurar Bind a fin de resolver nombres DNS para recursos dentro de la red virtual, use el texto siguiente como contenido del archivo
/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
Debe reemplazar
icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
por el sufijo DNS que recuperó anteriormente.Para editar el archivo, use el comando siguiente:
sudo nano /etc/bind/named.conf.local
Para guardar el archivo, use Ctrl+X, Y y, luego, Entrar.
Para iniciar Bind, use el comando siguiente:
sudo service bind9 restart
Para comprobar que Bind puede resolver los nombres de recursos en la red local, use los comandos siguientes:
sudo apt install dnsutils nslookup dns.mynetwork.net 10.0.0.4
Importante
Reemplace
dns.mynetwork.net
por el nombre de dominio completo (FQDN) de un recurso en la red local.Reemplace
10.0.0.4
por la dirección IP interna del servidor DNS personalizado en la red virtual.La respuesta es similar al texto siguiente:
Server: 10.0.0.4 Address: 10.0.0.4#53 Non-authoritative answer: Name: dns.mynetwork.net Address: 192.168.0.4
Configuración de la red virtual para usar el servidor DNS personalizado
Para configurar la red virtual para que use el servidor DNS personalizado, en lugar de la resolución recursiva de Azure, use los pasos siguientes en Azure Portal:
En el menú izquierdo, vaya a Todos los servicios>Redes>Redes virtuales.
Seleccione la red virtual en la lista y se abrirá la vista predeterminada de la red virtual.
En la vista predeterminada, en Configuración, seleccione Servidores DNS.
Seleccione Personalizar y escriba la DIRECCIÓN IP PRIVADA del servidor DNS personalizado.
Seleccione Guardar.
Configuración del servidor DNS local
En la sección anterior, configuró el servidor DNS personalizado para reenviar las solicitudes al servidor DNS local. A continuación, debe configurar el servidor DNS local para reenviar las solicitudes al servidor DNS personalizado.
Para conocer los pasos específicos sobre cómo configurar el servidor DNS, consulte la documentación correspondiente al software de servidor DNS. Busque los pasos sobre cómo configurar un reenvío condicional.
Un reenvío condicional solo reenvía solicitudes para un sufijo DNS específico. En este caso, debe configurar un reenvío para el sufijo DNS de la red virtual. Las solicitudes para este sufijo se deben reenviar a la dirección IP del servidor DNS personalizado.
El texto siguiente es un ejemplo de la configuración de un reenvío condicional para el software DNS Bind:
zone "icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net" {
type forward;
forwarders {10.0.0.4;}; # The custom DNS server's internal IP address
};
Para información sobre cómo usar DNS en Windows Server 2016, consulte la documentación de Add-DnsServerConditionalForwarderZone.
Una vez que configure el servidor DNS local, puede usar nslookup
desde la red local para comprobar que es posible resolver nombres en la red virtual. El ejemplo siguiente
nslookup dnsproxy.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net 196.168.0.4
En este ejemplo se usa el servidor DNS local en 196.168.0.4 para resolver el nombre del servidor DNS personalizado. Reemplace la dirección IP por la dirección IP del servidor DNS local. Reemplace la dirección dnsproxy
por el nombre de dominio completo del servidor DNS personalizado.
Opcional: control del tráfico de red
Puede usar grupos de seguridad de red (NSG) o rutas definidas por el usuario (UDR) para controlar el tráfico de red. Los NSG permiten filtrar el tráfico de entrada y de salida, además de permitir o denegar el tráfico. Las UDR permiten controlar el flujo del tráfico entre los recursos de la red virtual, Internet y la red local.
Advertencia
HDInsight requiere acceso de entrada desde direcciones IP específicas en la nube de Azure y acceso de salida sin restricciones. Cuando use NSG o UDR para controlar el tráfico, debe realizar los pasos siguientes:
Encuentre las direcciones IP de la ubicación que contiene la red virtual. Para obtener una lista de las direcciones IP requeridas por ubicación, consulte Direcciones IP requeridas.
Para las direcciones IP identificadas en el paso 1, permita el tráfico entrante desde ellas.
- Si usa NSG: permita el tráfico entrante en el puerto 443 para las direcciones IP.
- Si usa UDR: establezca el tipo Próximo salto de la ruta en Internet para las direcciones IP.
Para un ejemplo de cómo usar Azure PowerShell o la CLI de Azure para crear NSG, consulte el documento Extensión de HDInsight con redes virtuales de Azure.
Creación del clúster de HDInsight
Advertencia
Debe configurar el servidor DNS antes de instalar HDInsight en la red virtual.
Use los pasos que aparecen en el documento sobre cómo crear un clúster de HDInsight mediante Azure Portal de un clúster para crear un clúster de HDInsight.
Advertencia
- Durante la creación del clúster, debe elegir la ubicación que contiene la red virtual.
- En la parte Configuración avanzada de la configuración, debe seleccionar la red virtual y la subred que creó anteriormente.
Conexión a HDInsight
En la mayor parte de la documentación sobre HDInsight se supone que tiene acceso al clúster a través de Internet. Por ejemplo, que se puede conectar al clúster en https://CLUSTERNAME.azurehdinsight.net
. Esta dirección usa la puerta de enlace pública, que no está disponible si ha usado NSG o UDR para restringir el acceso desde Internet.
Alguna documentación también hace referencia a headnodehost
al conectarse al clúster desde una sesión de SSH. Esta dirección solo está disponible en los nodos de un clúster y no se puede usar en los clientes conectados a través de la red virtual.
Para conectarse directamente a HDInsight a través de la red virtual, use los pasos siguientes:
Para detectar los nombres de dominio completos internos de los nodos de clúster de HDInsight, use uno de los métodos siguientes:
$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}"
Para determinar el puerto en el que está disponible un servicio, consulte el documento Puertos utilizados por los servicios de Apache Hadoop en HDInsight.
Importante
Algunos servicios hospedados en los nodos principales solo están activos en un nodo a la vez. Si intenta acceder a un servicio en un nodo principal y se produce un error, cambie al otro nodo principal.
Por ejemplo, Apache Ambari solo está activo en un nodo principal a la vez. Si intenta acceder a Ambari en un nodo principal y se devuelve un error 404, es porque se ejecuta en el otro nodo principal.
Pasos siguientes
Para más información sobre cómo usar HDInsight en una red virtual, consulte el documento sobre el planeamiento de una implementación de red virtual para clústeres de Azure HDInsight.
Para más información sobre las redes virtuales de Azure, vea la información general sobre Azure Virtual Network.
Para más información sobre los grupos de seguridad de red, vea Grupos de seguridad de red.
Para obtener más información sobre las rutas definidas por el usuario, consulte Rutas definidas por el usuario y reenvío de IP.