Servicios de alta disponibilidad compatibles con Azure HDInsight

Para proporcionarle niveles óptimos de disponibilidad para los componentes de análisis, HDInsight se desarrolló con una arquitectura única para garantizar la alta disponibilidad (HA) de los servicios críticos. Microsoft desarrolló algunos componentes de esta arquitectura para proporcionar conmutación automática por error. Otros componentes son componentes de Apache estándar que se implementan para admitir servicios específicos. En este artículo se explica la arquitectura del modelo de servicio de alta disponibilidad en HDInsight, cómo HDInsight admite la conmutación por error para los servicios de alta disponibilidad y los procedimientos recomendados para recuperarse de otras interrupciones del servicio.

Nota:

Este artículo contiene referencias al término esclavo, un término que Microsoft ya no usa. Cuando se elimine el término del software, se eliminará también de este artículo.

Infraestructura de alta disponibilidad

HDInsight proporciona una infraestructura personalizada para garantizar que cuatro servicios principales tengan alta disponibilidad con capacidad de conmutación automática.

  • Servidor apache Ambari
  • Servidor de Línea de Tiempo de Aplicaciones para Apache YARN
  • Servidor de Historial de trabajos para MapReduce de Hadoop
  • Apache Livy

Esta infraestructura consta de muchos servicios y componentes de software, algunos de los cuales están diseñados por Microsoft. Los siguientes componentes son únicos para la plataforma de HDInsight:

  • Controlador de conmutación por error subordinado
  • Controlador de conmutación por error maestro
  • Servicio de alta disponibilidad subordinado
  • Servicio de alta disponibilidad maestro

infraestructura de alta disponibilidad.

También hay otros servicios de alta disponibilidad, que son compatibles con los componentes de confiabilidad de Apache de código abierto. Estos componentes también están presentes en clústeres de HDInsight:

  • Hadoop File System (HDFS) NameNode
  • YARN ResourceManager (gestor de recursos de YARN)
  • HBase Master

En las secciones siguientes se proporcionan más detalles sobre cómo funcionan juntos estos servicios.

Servicios de alta disponibilidad de HDInsight

Microsoft proporciona compatibilidad con los cuatro servicios apache de la tabla siguiente en clústeres de HDInsight. Para distinguirlos de los servicios de alta disponibilidad admitidos por los componentes de Apache, se denominan servicios de alta disponibilidad de HDInsight.

Service Nodos de clúster Tipos de clúster propósito
Servidor apache Ambari Nodo principal activo Todos Supervisa y administra el clúster.
Servidor de Escala de tiempo de la aplicación para Apache YARN Nodo principal activo Todos excepto Kafka Mantiene información de depuración sobre los trabajos de YARN que se ejecutan en el clúster.
Servidor de Historial de trabajos para MapReduce de Hadoop Nodo principal activo Todos excepto Kafka Mantiene los datos de depuración para los trabajos de MapReduce.
Apache Livy Nodo principal activo Spark Permite una interacción sencilla con un clúster de Spark a través de una interfaz REST.

Nota:

Actualmente, los clústeres de Enterprise Security Package (ESP) de HDInsight solo proporcionan alta disponibilidad del servidor de Ambari. El servidor de Escala de tiempo de la aplicación, el servidor del historial de trabajos y Livy se ejecutan solo en headnode0 y no conmutan por error a headnode1 cuando se produce la conmutación por error de Ambari. La base de datos de escala de tiempo de la aplicación también está en headnode0 y no en Ambari SQL Server.

Architecture

Cada clúster de HDInsight tiene dos nodos principales en modos activos y en espera, respectivamente. Los servicios de alta disponibilidad de HDInsight solo se ejecutan en nodos principales. Estos servicios siempre deben ejecutarse en el nodo principal activo y detener y poner en modo de mantenimiento en el nodo principal en espera.

Para mantener los estados correctos de los servicios de alta disponibilidad y proporcionar una conmutación por error rápida, HDInsight emplea Apache ZooKeeper, que es un servicio de coordinación para aplicaciones distribuidas empleado para realizar la elección del nodo principal activo. HDInsight también aprovisiona algunos procesos de Java en segundo plano, que coordinan el procedimiento de conmutación por error de los servicios de alta disponibilidad de HDInsight. Estos servicios son: el controlador de conmutación por error maestro, el controlador de conmutación por error subordinado, el master-ha-service y el slave-ha-service.

Apache ZooKeeper

Apache ZooKeeper es un servicio de coordinación de alto rendimiento para aplicaciones distribuidas. En producción, ZooKeeper normalmente se ejecuta en modo replicado donde un grupo replicado de servidor zooKeeper forma un cuórum. Cada clúster de HDInsight tiene tres nodos zooKeeper que permiten que tres servidores ZooKeeper forme un cuórum. HDInsight tiene dos quórums de ZooKeeper que se ejecutan en paralelo. Un cuórum decide el nodo principal activo en un clúster en el que se deben ejecutar los servicios de alta disponibilidad de HDInsight. Otro cuórum se usa para coordinar los servicios de alta disponibilidad proporcionados por Apache, como se detalla en secciones posteriores.

Controlador de conmutación por error subordinado

El Controlador de conmutación por error subordinado se ejecuta en todos los nodos de un clúster de HDInsight. Este controlador es responsable de iniciar el agente de Ambari y el servicio slave-ha-service en cada nodo. Periódicamente, consulta el primer cuórum ZooKeeper para conocer el nodo principal activo. Cuando los nodos principales activo y en espera cambian, el controlador de conmutación por error subordinado realiza los pasos siguientes:

  1. Actualiza el archivo de configuración del host.
  2. Reinicia el agente de Ambari.

El slave-ha-service es responsable de detener los servicios de HA de HDInsight (excepto el servidor Ambari) en el nodo jefe en espera.

Controlador de conmutación por error maestro

Un controlador maestro de conmutación automática se ejecuta en ambos nodos principales. Ambos controladores de conmutación por error maestros se comunican con el primer cuórum de ZooKeeper para designar el nodo principal en el que se van a ejecutar como nodo principal activo.

Por ejemplo, si el controlador de conmutación por error maestro en el nodo principal 0 gana la elección, se realizan los siguientes cambios:

  1. El nodo principal 0 se activa.
  2. El controlador de conmutación por error maestro inicia el servidor Ambari y el servicio master-ha-service en el nodo principal 0.
  3. El otro controlador de conmutación por error maestro detiene el servidor Ambari y el servicio master-ha-service en el nodo principal 1.

El servicio master-ha solo se ejecuta en el nodo principal activo, detiene los servicios de alta disponibilidad de HDInsight (excepto el servidor Ambari) en el nodo principal en espera y los inicia en el nodo principal activo.

El proceso de conmutación por error

proceso de conmutación por error.

En cada nodo principal se ejecuta un monitor de estado junto con el controlador de conmutación por error maestro para enviar notificaciones de latido al cuórum de Zookeeper. El nodo principal se considera un servicio HA en este escenario. El monitor de estado comprueba si cada servicio de alta disponibilidad está en buen estado y si está listo para unirse a la elección del liderazgo. Si es así, este nodo principal compite en las elecciones. Si no, sale de la elección hasta que vuelva a estar listo.

Si el nodo principal en espera alcanza el liderazgo y se vuelve activo (por ejemplo, en el caso de que se produzca un error con el nodo activo anterior), su controlador de conmutación por error maestro inicia en él todos los servicios de alta disponibilidad de HDInsight. El controlador de conmutación por error maestro detiene estos servicios en el otro nodo principal.

En el caso de errores del servicio de alta disponibilidad de HDInsight, por ejemplo, que un servicio esté inactivo o en mal estado, el controlador de conmutación por error maestro debe reiniciar o detener los servicios de forma automática según el estado del nodo principal. Los usuarios no deben iniciar manualmente los servicios de alta disponibilidad de HDInsight en ambos nodos principales. En su lugar, permita la conmutación por error automática o manual para la recuperación del servicio.

Intervención manual involuntaria

Los servicios de alta disponibilidad de HDInsight solo se deben ejecutar en el nodo principal activo y se reiniciarán automáticamente cuando sea necesario. Dado que los servicios de alta disponibilidad no tienen su propio monitor de estado de forma individual, la conmutación por error no se puede desencadenar en el nivel del servicio individual. La conmutación por error se garantiza en el nivel de nodo y no en el nivel de servicio.

Algunos problemas conocidos

  • Cuando se inicia manualmente un servicio de alta disponibilidad en el nodo principal en espera, no se detendrá hasta que se produzca la siguiente conmutación por error. Cuando los servicios de alta disponibilidad se ejecutan en ambos nodos principales, algunos posibles problemas incluyen: la interfaz de usuario de Ambari no es accesible, Ambari produce errores, YARN, Spark y trabajos de Oozie pueden quedar bloqueados.

  • Cuando se detiene un servicio de alta disponibilidad en el nodo principal activo, no se reiniciará hasta que se produzca la siguiente conmutación por error o se reinicie el controlador de conmutación por error maestro o el servicio de alta disponibilidad maestro. Cuando uno o varios servicios de alta disponibilidad se detienen en el nodo principal activo, especialmente cuando se detiene el servidor de Ambari, la interfaz de usuario de Ambari no es accesible, otros posibles problemas incluyen errores de trabajos de YARN, Spark y Oozie.

Servicios de alta disponibilidad de Apache

Apache proporciona alta disponibilidad para HDFS NameNode, YARN ResourceManager y HBase Master, que también están disponibles en clústeres de HDInsight. A diferencia de los servicios de alta disponibilidad de HDInsight, se admiten en los clústeres de ESP (seguridad empresarial). Los servicios de alta disponibilidad de Apache se comunican con el segundo cuórum de ZooKeeper (descrito en la sección anterior) para elegir los estados activo o en espera y realizar la conmutación automática por error. En las secciones siguientes se detalla cómo funcionan estos servicios.

NameNode del sistema de archivos distribuido de Hadoop (HDFS)

Los clústeres de HDInsight basados en Apache Hadoop 2.0 o posterior proporcionan alta disponibilidad de NameNode. Hay dos instancias de NameNode que se ejecutan en los nodos principales, que están configuradas para la conmutación automática por error. Los NameNodes usan ZKFailoverController para comunicarse con Zookeeper para elegir el estado activo o en espera. ZKFailoverController se ejecuta en ambos nodos principales y funciona de la misma manera que el controlador de conmutación por error maestro.

El segundo cuórum de Zookeeper es independiente del primer cuórum, por lo que el NameNode activo no se puede ejecutar en el nodo principal activo. Cuando el NameNode activo está muerto o en mal estado, el NameNode en modo de espera gana la elección y se activa.

YARN ResourceManager (gestor de recursos de YARN)

Los clústeres de HDInsight basados en Apache Hadoop 2.4 o versiones posteriores admiten la alta disponibilidad de YARN ResourceManager. Hay dos ResourceManagers, rm1 y rm2, que se ejecutan en el nodo principal 0 y el nodo principal 1, respectivamente. Al igual que NameNode, YARN ResourceManager también está configurado para la conmutación automática por error. Otro ResourceManager se elige automáticamente para que esté activo cuando el ResourceManager activo actual deja de funcionar o no responde.

YARN ResourceManager usa su elemento ActiveStandbyElector insertado como detector de errores y elector del líder. A diferencia de HDFS NameNode, YARN ResourceManager no necesita un demonio de ZKFC independiente. El ResourceManager activo escribe sus estados en Apache Zookeeper.

La alta disponibilidad del ResourceManager de YARN es independiente de NameNode y otros servicios de alta disponibilidad de HDInsight. Es posible que el ResourceManager activo no se ejecute en el nodo principal activo o en el nodo principal donde se ejecuta el NameNode activo. Para obtener más información sobre la alta disponibilidad de YARN ResourceManager, consulte Alta disponibilidad de ResourceManager.

HBase Master

Los clústeres de HBase de HDInsight admiten la alta disponibilidad de HBase Master. A diferencia de otros servicios de alta disponibilidad, que se ejecutan en nodos principales, HBase Masters se ejecuta en los tres nodos de Zookeeper, donde uno de ellos es el maestro activo y los otros dos están en espera. Al igual que NameNode, HBase Master se coordina con Apache Zookeeper para la elección del líder y realiza la conmutación automática por error cuando el maestro activo actual tiene problemas. Solo hay un HBase Master activo en cualquier momento.

Pasos siguientes