Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour vous fournir des niveaux de disponibilité optimaux pour vos composants d’analyse, HDInsight a été développé avec une architecture unique pour garantir la haute disponibilité des services critiques. Microsoft a développé certains composants de cette architecture pour fournir un basculement automatique. D’autres composants sont des composants Apache standard déployés pour prendre en charge des services spécifiques. Cet article décrit en détail l’architecture du modèle de service de haute disponibilité dans HDInsight, la façon dont HDInsight prend en charge le basculement pour les services haute disponibilité et les meilleures pratiques pour effectuer une reprise à partir d’autres interruptions de service.
Note
Cet article contient des références au terme esclave, un terme que Microsoft n’utilise plus. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.
Infrastructure de haute disponibilité
HDInsight fournit une infrastructure personnalisée pour s’assurer que quatre services principaux sont à haute disponibilité avec des fonctionnalités de basculement automatique :
- Serveur Apache Ambari
- Serveur de chronologie d’application pour Apache YARN
- Serveur d’historique des travaux pour Hadoop MapReduce
- Apache Livy
Cette infrastructure se compose de nombreux services et composants logiciels, dont certains sont conçus par Microsoft. Les composants suivants sont uniques à la plateforme HDInsight :
- Basculer le contrôleur esclave
- Basculer le contrôleur maître
- Service de haute disponibilité esclave
- Maîtriser le service de haute disponibilité
Il existe également d’autres services de haute disponibilité, pris en charge par les composants de fiabilité Apache open source. Ces composants sont également présents sur les clusters HDInsight :
- Système de fichiers Hadoop (HDFS) NameNode
- Gestionnaire de ressources YARN
- HBase Master
Les sections suivantes fournissent plus de détails sur le fonctionnement de ces services.
Services de haute disponibilité HDInsight
Microsoft prend en charge les quatre services Apache dans le tableau suivant dans les clusters HDInsight. Pour les distinguer des services de haute disponibilité pris en charge par les composants d’Apache, ils sont appelés services haute disponibilité HDInsight.
| Service | Nœuds de cluster | Types de cluster | Objectif |
|---|---|---|---|
| Serveur Apache Ambari | Nœud principal actif | Tous | Surveille et gère le cluster. |
| Serveur de chronologie d’application pour Apache YARN | Nœud principal actif | Tout sauf Kafka | Conserve les informations de débogage concernant les tâches YARN exécutées sur le cluster. |
| Serveur d’historique des travaux pour Hadoop MapReduce | Nœud principal actif | Tout sauf Kafka | Gère les données de débogage pour les travaux MapReduce. |
| Apache Livy | Nœud principal actif | Spark | Permet une interaction facile avec un cluster Spark sur une interface REST |
Note
Les clusters HDInsight Enterprise Security Package (ESP) fournissent actuellement uniquement la haute disponibilité du serveur Ambari. Le serveur de chronologie des applications, le serveur d’historique des travaux et Livy s’exécutent uniquement sur headnode0 et ne basculent pas vers headnode1 lorsque Ambari bascule. La base de données de chronologie de l’application est également sur headnode0 et non sur le serveur SQL Ambari.
Architecture
Chaque cluster HDInsight a deux nœuds principaux en modes actif et de secours, respectivement. Les services de haute disponibilité HDInsight s’exécutent uniquement sur nœuds principaux. Ces services doivent toujours s'exécuter sur le nœud de tête actif et être arrêtés puis mis en mode maintenance sur le nœud de tête de secours.
Pour conserver les états corrects des services de haute disponibilité et fournir un basculement rapide, HDInsight utilise Apache ZooKeeper, qui est un service de coordination pour les applications distribuées afin d’effectuer l’élection du nœud principal actif. HDInsight provisionne également quelques processus Java en arrière-plan, qui coordonnent la procédure de basculement pour les services haute disponibilité HDInsight. Ces services sont : le contrôleur de basculement principal, le contrôleur de basculement secondaire, le service principal-ha et le service secondaire-ha.
Apache ZooKeeper
Apache ZooKeeper est un service de coordination hautes performances pour les applications distribuées. En production, ZooKeeper s’exécute généralement en mode répliqué où un groupe répliqué de serveur ZooKeeper forme un quorum. Chaque cluster HDInsight a trois nœuds ZooKeeper qui permettent à trois serveurs ZooKeeper de former un quorum. HDInsight possède deux quorums ZooKeeper s’exécutant en parallèle. Un quorum détermine le nœud principal actif dans un cluster sur lequel les services haute disponibilité HDInsight doivent s’exécuter. Un autre quorum est utilisé pour coordonner les services haute disponibilité fournis par Apache, comme indiqué dans les sections ultérieures.
Basculer le contrôleur esclave
Le contrôleur de basculement esclave s’exécute sur chaque nœud d’un cluster HDInsight. Ce contrôleur est responsable du démarrage de l’agent Ambari et du service esclave-ha sur chaque nœud. Il interroge régulièrement le premier quorum ZooKeeper sur le nœud principal actif. Lorsque les nœuds principaux actifs et de secours changent, le contrôleur de basculement des nœuds esclaves effectue les étapes suivantes :
- Met à jour le fichier de configuration de l’hôte.
- Redémarre l’agent Ambari.
slave-ha-service est chargé d’arrêter les services haute disponibilité HDInsight (à l’exception du serveur Ambari) sur le nœud principal de secours.
Basculer le contrôleur maître
Un contrôleur de basculement principal s’exécute sur les deux nœuds principaux. Les deux contrôleurs de basculement principaux communiquent avec le premier quorum ZooKeeper pour désigner le nœud principal sur lequel ils s’exécutent en tant que nœud principal actif.
Par exemple, si le contrôleur de basculement principal sur le nœud principal 0 remporte l’élection, les modifications suivantes ont lieu :
- Le nœud principal 0 devient actif.
- Le contrôleur de basculement maître démarre le serveur Ambari et master-ha-service sur le nœud principal 0.
- L’autre contrôleur de basculement maître arrête le serveur Ambari et master-ha-service sur le nœud principal 1.
Le service master-ha s’exécute uniquement sur le nœud principal actif, il arrête les services haute disponibilité HDInsight (à l’exception du serveur Ambari) sur le nœud principal de secours et les démarre sur le nœud principal actif.
Processus de basculement
Un moniteur d’intégrité s’exécute sur chaque nœud principal avec le contrôleur de basculement principal pour envoyer des notifications de pulsation au quorum Zookeeper. Le nœud principal est considéré comme un service haute disponibilité dans ce scénario. Le moniteur d’intégrité vérifie si chaque service haute disponibilité est sain et s’il est prêt à participer à l’élection du service maître. Si oui, ce nœud principal participe à l'élection. Si ce n’est pas le cas, il la quittera jusqu’à être à nouveau prêt.
Si le nœud de réserve parvient à assumer le leadership et devient actif (par exemple, en cas de défaillance du nœud actif précédent), son contrôleur de basculement principal démarre tous les services HA HDInsight dessus. Le contrôleur de basculement principal arrête également ces services sur l’autre nœud principal.
Pour les échecs de services haute disponibilité HDInsight, tels qu’un service en panne ou défectueux, le contrôleur de basculement principal doit automatiquement redémarrer ou arrêter les services en fonction de l’état du nœud principal. Les utilisateurs ne doivent pas démarrer manuellement les services haute disponibilité HDInsight sur les deux nœuds principaux. Au lieu de cela, autorisez le basculement automatique ou manuel pour faciliter la récupération du service.
Intervention manuelle par inadvertance
Les services haute disponibilité HDInsight ne doivent s’exécuter que sur le nœud principal actif et redémarrer automatiquement si nécessaire. Étant donné que les services de haute disponibilité individuels ne possèdent pas leur propre moniteur d’intégrité, le basculement ne peut pas être déclenché au niveau du service individuel. Le basculement est assuré au niveau du nœud et non au niveau du service.
Certains problèmes connus
Lors du démarrage manuel d’un service de haute disponibilité sur le nœud principal de secours, il ne s’arrête pas tant que le basculement suivant n’a pas lieu. Lorsque les services de haute-disponibilité s'exécutent sur les deux nœuds principaux, certains problèmes potentiels sont les suivants : l’interface utilisateur Ambari est inaccessible, Ambari génère des erreurs, les travaux YARN, Spark et Oozie peuvent se bloquer.
Lorsqu’un service haute disponibilité s’arrête sur le nœud principal actif, il ne redémarre pas tant que le basculement suivant n’a pas eu lieu ou que le contrôleur de basculement principal/master-ha-service n’a pas redémarré. Lorsqu’un ou plusieurs services haute disponibilité cessent de fonctionner sur le nœud principal actif, en particulier lorsque le serveur Ambari s’arrête, l’interface utilisateur Ambari devient inaccessible, d’autres problèmes possibles incluent des échecs de tâches YARN, Spark et Oozie.
Services de haute disponibilité Apache
Apache fournit une haute disponibilité pour HDFS NameNode, YARN ResourceManager et HBase Master, qui sont également disponibles dans les clusters HDInsight. Contrairement aux services haute disponibilité HDInsight, ils sont pris en charge dans les clusters ESP. Les services haute disponibilité Apache communiquent avec le deuxième quorum ZooKeeper (décrit dans la section ci-dessus) pour choisir les états actif/de veille et effectuer le basculement automatique. Les sections suivantes détaillent le fonctionnement de ces services.
Système de fichiers distribués Hadoop (HDFS) NameNode
Les clusters HDInsight basés sur Apache Hadoop 2.0 ou version ultérieure fournissent une haute disponibilité NameNode. Deux NameNodes s’exécutent sur le nœuds principaux, qui sont configurés pour le basculement automatique. Les NameNodes utilisent ZKFailoverController pour communiquer avec Zookeeper pour choisir l’état actif/de secours. ZKFailoverController s’exécute sur les deux nœuds principaux et fonctionne de la même façon que le contrôleur de basculement maître.
Le deuxième quorum Zookeeper est indépendant du premier quorum. Le NameNode actif peut donc ne pas s’exécuter sur le nœud principal actif. Lorsque le NameNode actif est mort ou défectueux, le NameNode de secours gagne l’élection et devient actif.
Gestionnaire de ressources YARN
Les clusters HDInsight basés sur Apache Hadoop 2.4 ou version ultérieure prennent en charge la haute disponibilité YARN ResourceManager. Il existe deux ResourceManagers, rm1 et rm2, s’exécutant respectivement sur headnode 0 et headnode 1. Comme NameNode, YARN ResourceManager est également configuré pour le basculement automatique. Un autre ResourceManager est automatiquement sélectionné pour être actif lorsque le ResourceManager actif actuel tombe en panne ou ne répond pas.
YARN ResourceManager utilise son ActiveStandbyElector incorporé comme détecteur d’échecs et électeur de leader. Contrairement à HDFS NameNode, YARN ResourceManager n’a pas besoin d’un démon ZKFC distinct. Le ResourceManager actif enregistre ses états dans Apache Zookeeper.
La haute disponibilité de YARN ResourceManager est indépendante de NameNode et d’autres services de haute disponibilité HDInsight. Le ResourceManager actif peut ne pas s’exécuter sur le nœud principal actif ou sur le nœud principal où le NameNode actif est en cours d’exécution. Pour plus d’informations sur la haute disponibilité YARN ResourceManager, consultez ResourceManager High Availability.
HBase Master
Les clusters HDInsight HBase prennent en charge la haute disponibilité du maître HBase. Contrairement à d’autres services haute disponibilité, qui s’exécutent sur les nœuds principaux, les maîtres HBase s’exécutent sur les trois nœuds Zookeeper, dans lesquels un nœud est le maître actif et les deux autres sont en veille. Comme NameNode, HBase Master coordonne avec Apache Zookeeper pour l’élection du responsable et effectue un basculement automatique lorsque le maître actif actuel rencontre des problèmes. Il n’existe qu’un seul maître HBase actif à tout moment.