Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, se describen los pasos para configurar la conectividad entre una máquina virtual (VM) y un clúster de Kafka en HDInsight que residen en dos redes virtuales (VNet) diferentes.
Conexión de un clúster de Kafka de HDInsight con una máquina virtual de cliente de otra red virtual
Cree dos redes virtuales diferentes en las que, por un lado, se hospedará el clúster de Kafka en HDInsight y, por otro lado, la máquina virtual. Para más información, consulte Creación de una red virtual mediante Azure Portal.
Empareje estas dos redes virtuales, de modo que las direcciones IP de sus subredes no se superpongan entre sí. Para más información, consulte Conexión de redes virtuales con emparejamiento de redes virtuales mediante Azure Portal.
Asegúrese de que el estado de emparejamiento se muestre como conectado.
Cree un clúster de Kafka en HDInsight en la primera red virtual
hdi-primary-vnet
. Para más información, consulte Creación de un clúster de Kafka en HDInsight.Cree una máquina virtual (VM) en la segunda red virtual
hilo-secondary-vnet
. Al crear la máquina virtual, especifique el segundo nombre de red virtual donde se debe implementar esta máquina virtual. Para obtener más información, consulte Creación de una máquina virtual Linux en Azure Portal.Nota
Las direcciones IP de las máquinas virtuales de Kafka nunca cambian si la máquina virtual está presente en el clúster. Solo cuando se reemplaza manualmente la máquina virtual del clúster, esa dirección IP cambia. Puede comprobar las direcciones IP más recientes desde el portal de Ambari.
Métodos para conectarse al clúster de Kafka en HDInsight desde la máquina virtual cliente
- Configuración de Kafka para anunciar direcciones IP: use
Kafka IP advertising
para rellenar las direcciones IP privadas del nodo de trabajo de Kafka en otra red virtual. Una vez realizado el anuncio de direcciones IP, use la configuración de DNS privada para la resolución DNS del FQDN de los nodos de trabajo. - Actualice el archivo /etc/hosts en la máquina cliente: actualice el archivo
/etc/hosts
de la máquina cliente con el archivo/etc/hosts
del nodo principal o de trabajo de Kafka.
Nota
- La configuración del DNS privado es opcional después del anuncio de direcciones IP. Esto solo es necesario cuando se desea usar el FQDN de los nodos de trabajo de Kafka con el nombre de dominio DNS privado en lugar de las direcciones IP privadas.
- Las direcciones IP de las máquinas virtuales de Kafka nunca cambian si la máquina virtual está presente en el clúster. Solo cuando se reemplaza manualmente la máquina virtual del clúster, esa dirección IP cambia. Puede comprobar las direcciones IP más recientes desde el portal de Ambari.
Configuración de Kafka para anunciar direcciones IP
Esta configuración permite al cliente conectarse mediante direcciones IP de agente en lugar de nombres de dominio. De manera predeterminada, Apache Zookeeper devuelve el nombre de dominio de los agentes de Kafka a los clientes.
Esta configuración no funciona con el cliente de software de VPN, ya que no puede usar la resolución de nombres para entidades de la red virtual.
Use los pasos siguientes para configurar Kafka en HDInsight para anunciar direcciones IP en lugar de nombres de dominio:
Vaya a
https://CLUSTERNAME.azurehdinsight.net
desde un explorador web. ReemplaceCLUSTERNAME
por el nombre del clúster de Kafka en HDInsight.Cuando se le solicite, use el
username
y lapassword
para el clúster. Aparece la interfaz de usuario web de Ambari para el clúster.Para ver información sobre Kafka, seleccione
Kafka
en el panel izquierdo y, después, seleccione configuraciones.Para acceder a la configuración
kafka-env
en el panel de Ambari, solo tiene que escribirkafka-env
en el campo de filtro superior derecho en la interfaz de usuario de Ambari.Para configurar Kafka y anunciar direcciones IP, agregue el texto siguiente en la parte inferior del campo
kafka-env-template
:# Configure Kafka to advertise IP addresses instead of FQDN IP_ADDRESS=$(hostname -i) echo advertised.listeners=$IP_ADDRESS sed -i.bak -e '/advertised/{/advertised@/!d;}' /usr/hdp/current/kafka-broker/conf/server.properties echo "advertised.listeners=PLAINTEXT://$IP_ADDRESS:9092" >> /usr/hdp/current/kafka-broker/conf/server.properties
Para configurar la interfaz en que escucha Kafka, escriba
listeners
en el campo Filtrar que se encuentra en la esquina superior derecha.Para configurar Kafka para que escuche en todas las interfaces de red, cambie el valor del campo
listeners
(agentes de escucha) aPLAINTEXT://0.0.0.0:9092
.Use el botón
Save
para guardar los cambios en la configuración. Escriba un mensaje de texto para describir los cambios. SeleccioneOK
una vez que se guarden los cambios.Para evitar errores al reiniciar Kafka, use el botón
Actions
y seleccioneTurn On Maintenance Mode
. SeleccioneOK
para completar esta operación.Para reiniciar Kafka, use el botón
Restart
y seleccioneRestart All Affected
(Reiniciar todos los elementos afectados). Confirme el reinicio y use el botónOK
una vez que se complete la operación.Para deshabilitar el modo de mantenimiento, use el botón
Actions
y seleccioneTurn Off Maintenance Mode
. SeleccioneOK
para completar esta operación.Ahora puede ejecutar los trabajos desde la máquina virtual cliente con la dirección IP de Kafka. Para comprobar la dirección IP de los nodos de trabajo desde el portal de Ambari, haga clic en
Hosts
en el panel izquierdo.Use el repositorio Git de ejemplo para crear temas de Kafka](https://github.com/Azure-Samples/hdinsight-kafka-java-get-started) para generar y consumir datos de ese tema.
# In previous example IP of worker node 0 is `broker1-ip` and worker node 1 is `broker2-ip` # Create Kafka Topic java -jar kafka-producer-consumer.jar create <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar create test broker1-ip:9092,broker1-ip:9092
# Produce Data in Topic java -jar kafka-producer-consumer.jar producer <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar producer test broker1-ip:9092, broker2-ip:9092
# Consume Data from Topic java -jar kafka-producer-consumer.jar consumer <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar consumer test broker1-ip:9092,broker2-ip:9092
Nota
Se recomienda agregar todas las direcciones IP de los agentes en $KAFKABROKERS para la tolerancia a errores.
Actualización del archivo /etc/hosts en la máquina cliente
Copie las entradas de nodos de trabajo resaltadas del archivo
/etc/host
desde el nodo principal de Kafka a la máquina virtual cliente.Después de aplicar estas entradas, intente llegar al panel de Ambari/Kafka mediante el explorador web o comando curl mediante el nombre de dominio completo hn0 o hn1, como:
Si la máquina virtual cliente usa el sistema operativo Linux
# Execute curl command curl hn0-hdi-ka.mvml5coqo4xuzc1nckq1sltcxf.bx.internal.cloudapp.net:8080 # Output <!-- * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="stylesheets/vendor.css"> <link rel="stylesheet" href="stylesheets/app.css"> <script src="javascripts/vendor.js"></script> <script src="javascripts/app.js"></script> <script> $(document).ready(function() { require('initialize'); // make favicon work in firefox $('link[type*=icon]').detach().appendTo('head'); $('#loading').remove(); }); </script> <title>Ambari</title> <link rel="shortcut icon" href="/img/logo.png" type="image/x-icon"> </head> <body> <div id="loading">...Loading...</div> <div id="wrapper"> <!-- ApplicationView --> </div> <footer> <div class="container footer-links"> <a data-qa="license-link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Licensed under the Apache License, Version 2.0</a>. <a data-qa="third-party-link" href="/licenses/NOTICE.txt" target="_blank">See third-party tools/resources that Ambari uses and their respective authors</a> </div> </footer> </body> </html>
Si la máquina virtual cliente usa el sistema operativo Windows
Vaya a la página de información general de
hdi-kafka
y haga clic en la vista de Ambari para obtener la dirección URL.Coloque la credencial de inicio de sesión como nombre de usuario
admin
y contraseñaYOUR_PASSWORD
, que ha establecido al crear el clúster.Nota
- En la máquina virtual Windows, los nombres de host estáticos deben agregarse en el archivo de host que se encuentra en la ruta de acceso
C:\Windows\System32\drivers\etc\
. - En este artículo, se supone que el servidor de Ambari está activo en
Head Node 0
. Si el servidor de Ambari está activo enHead Node 1
, use el nombre de dominio completo de hn1 para acceder a la interfaz de usuario de Ambari.
- En la máquina virtual Windows, los nombres de host estáticos deben agregarse en el archivo de host que se encuentra en la ruta de acceso
También puede enviar mensajes al tema kafka y leer los temas de la máquina virtual. Para hacerlo, puede intentar usar esta aplicación Java de ejemplo.
Use el repositorio Git de ejemplo para crear temas de Kafka, y generar y consumir datos de ese tema. Para más información, consulte hdinsight-kafka-java-getting-started.
Puede usar el FQDN, dirección IP o nombre corto (primeras seis letras del nombre del clúster) de los agentes para pasar como
KAFKABROKERS
en los siguientes comandos.# In the previous example # IP of worker node 0 is `broker1-ip` and worker node 1 is `broker2-ip` # Short Name of worker node 0 is `wn0-hdi-ka` and worker node 1 is `wn1-hdi-ka` # FQDN of worker node 0 is `wn0-hdi-ka.mvml5coqo4xuzc1nckq1sltcxf.bx.internal.cloudapp.net` and worker node 1 is `wn1-hdi-ka.mvml5coqo4xuzc1nckq1sltcxf.bx.internal.cloudapp.net` # Create Kafka Topic java -jar kafka-producer-consumer.jar create <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar create test broker1-ip:9092,broker2-ip:9092 # Produce Data in Topic java -jar kafka-producer-consumer.jar producer <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar producer test wn0-hdi-ka:9092,wn1-hdi-ka:9092 # Consume Data from Topic java -jar kafka-producer-consumer.jar consumer <topic_name> $KAFKABROKERS java -jar kafka-producer-consumer.jar consumer test wn0-hdi-ka.mvml5coqo4xuzc1nckq1sltcxf.bx.internal.cloudapp.net:9092,wn1-hdi-ka.mvml5coqo4xuzc1nckq1sltcxf.bx.internal.cloudapp.net:9092
Nota
Se recomienda agregar todos los agentes de direcciones IP, FQDN o nombre corto en $KAFKABROKERS para la tolerancia a errores.