Serveur minecraft

Une introduction à Apache Mesos – Un bon serveur Minecraft

Le 7 février 2020 - 10 minutes de lecture

Apache Mesos est un gestionnaire de cluster qui fournit une isolation et un partage efficaces des ressources entre les applications ou les infrastructures distribuées. Mesos est un logiciel open source développé à l'origine à l'Université de Californie à Berkeley. Il se situe entre la couche d'application et le système d'exploitation et facilite le déploiement et la gestion des applications dans des environnements en cluster à grande échelle plus efficacement. Il peut exécuter de nombreuses applications sur un pool de nœuds partagé dynamiquement. Les principaux utilisateurs de Mesos incluent Twitter, Airbnb, MediaCrossing, Xogito et Catégoriser.

Mesos exploite les fonctionnalités du noyau moderne – «cgroups» sous Linux, «zones» sous Solaris – pour isoler le processeur, la mémoire, les E / S, le système de fichiers, la localité du rack, etc. La grande idée est de créer une grande collection de des ressources hétérogènes. Mesos introduit un mécanisme de planification distribué à deux niveaux appelé offres de ressources. Mesos décide du nombre de ressources à offrir à chaque framework, tandis que les frameworks décident quelles ressources accepter et quels calculs les exécuter. Il s'agit d'une couche mince de partage de ressources qui permet un partage précis à travers divers cadres informatiques de cluster, en donnant aux cadres une interface commune pour accéder aux ressources du cluster.L'idée est de déployer plusieurs systèmes distribués sur un pool partagé de nœuds afin d'augmenter l'utilisation des ressources . De nombreuses charges de travail et frameworks modernes peuvent s'exécuter sur Mesos, notamment Hadoop, Memecached, Ruby on Rails, Storm, JBoss Data Grid, MPI, Spark et Node.js, ainsi que divers serveurs Web, bases de données et serveurs d'applications.

Abstraction des nœuds dans Apache Mesos (source)

De la même manière qu'un système d'exploitation PC gère l'accès aux ressources sur un ordinateur de bureau, Mesos garantit que les applications ont accès aux ressources dont elles ont besoin dans un cluster. Au lieu de configurer de nombreux clusters de serveurs pour différentes parties d'une application, Mesos vous permet de partager un pool de serveurs qui peuvent tous exécuter différentes parties de votre application sans qu'ils interfèrent les uns avec les autres et avec la possibilité d'allouer dynamiquement des ressources à travers le cluster comme nécessaire. Cela signifie qu'il pourrait facilement détourner les ressources de framework1 (par exemple, effectuer une analyse des mégadonnées) et les allouer à framework2 (par exemple, un serveur Web), en cas de trafic réseau important. Il réduit également la plupart des étapes manuelles du déploiement des applications et peut déplacer automatiquement les charges de travail pour fournir une tolérance aux pannes et maintenir des taux d'utilisation élevés.

Le partage des ressources à travers le cluster augmente le débit et l'utilisation (source)

Mesos est essentiellement un noyau de centre de données, ce qui signifie que c'est le logiciel qui isole réellement les charges de travail en cours d'exécution les unes des autres. Il a toujours besoin d'outils supplémentaires pour permettre aux ingénieurs d'exécuter leurs charges de travail sur le système et de gérer le moment où ces travaux s'exécutent réellement. Sinon, certaines charges de travail pourraient consommer toutes les ressources, ou des charges de travail importantes pourraient être heurtées par des charges de travail moins importantes qui nécessitent parfois plus de ressources. Par conséquent, Mesos a besoin de plus qu'un simple noyau—Planificateur Chronos, un remplacement cron pour démarrer et arrêter automatiquement les services (et gérer les échecs) qui s'exécute au-dessus de Mesos. L'autre partie du Mesos est Marathon qui fournit une API pour le démarrage, l'arrêt et la mise à l'échelle des services (et Chronos pourrait être l'un de ces services).

Charges de travail à Chronos et Marathon (source)

Architecture

Mesos se compose d'un processus maître qui gère les démons esclaves s'exécutant sur chaque nœud de cluster et de frameworks qui exécutent des tâches sur ces esclaves. Le maître implémente un partage fin à travers les frameworks à l'aide d'offres de ressources. Chaque offre de ressources est une liste de ressources gratuites sur plusieurs esclaves. Le maître décide du nombre de ressources à offrir à chaque cadre selon une politique organisationnelle, comme le partage équitable ou la priorité. Pour prendre en charge un ensemble diversifié de politiques d'allocation inter-framework, Mesos permet aux organisations de définir leurs propres politiques via un module d'allocation enfichable.

Architecture Mesos avec deux frameworks en cours d'exécution (source)

Chaque framework s'exécutant sur Mesos se compose de deux composants: un planificateur qui s'enregistre auprès du maître pour se voir proposer des ressources, et un processus exécuteur qui est lancé sur les nœuds esclaves pour exécuter les tâches du framework. Alors que le maître détermine le nombre de ressources à offrir à chaque infrastructure, les ordonnanceurs des infrastructures sélectionnent les ressources offertes à utiliser. Lorsqu'un framework accepte les ressources proposées, il transmet à Mesos une description des tâches qu'il souhaite lancer sur celles-ci.

Planification du framework dans Mesos (source)

La figure ci-dessus montre un exemple de la façon dont une infrastructure est planifiée pour exécuter des tâches. Dans la première étape, l'esclave 1 signale au maître qu'il dispose de 4 CPU et 4 Go de mémoire libre. Le maître invoque ensuite le module d'allocation, qui lui indique que le framework 1 doit se voir offrir toutes les ressources disponibles. À l'étape deux, le maître envoie une offre de ressources décrivant ces ressources au framework 1. À l'étape trois, le planificateur du framework répond au maître avec des informations sur deux tâches à exécuter sur l'esclave, en utilisant 2 CPU; 1 Go de RAM pour la première tâche et 1 CPU; 2 Go de RAM pour la deuxième tâche. Enfin, à l'étape quatre, le maître envoie les tâches à l'esclave, qui alloue les ressources appropriées à l'exécuteur du framework, qui à son tour lance les deux tâches (représentées avec des bordures en pointillés). Dans la mesure où 1 CPU et 1 Go de RAM sont toujours disponibles, le module d'allocation peut désormais les proposer au framework 2. De plus, ce processus d'offre de ressources se répète lorsque les tâches se terminent et que de nouvelles ressources deviennent libres.

Alors que l'interface mince fournie par Mesos lui permet d'évoluer et permet aux frameworks d'évoluer indépendamment. Un cadre rejettera les offres qui ne satisfont pas à ses contraintes et acceptera celles qui le feront. En particulier, nous avons constaté qu'une politique simple appelée ordonnancement des retards, dans laquelle les frameworks attendent un temps limité pour acquérir des nœuds stockant les données d'entrée, donne une localité de données presque optimale.

Fonctionnalités Mesos

  • Maître répliqué tolérant aux pannes à l'aide de ZooKeeper
  • Extensibilité à des milliers de nœuds
  • Isolement entre les tâches avec des conteneurs Linux
  • Planification multi-ressources (compatible mémoire et CPU)
  • API Java, Python et C ++ pour développer de nouvelles applications parallèles
  • Interface utilisateur Web pour afficher l'état du cluster

Il existe un certain nombre de projets logiciels construits sur Apache Mesos:

Services de longue durée

  • Aurore est un planificateur de services qui s'exécute au-dessus de Mesos, vous permettant d'exécuter des services de longue durée qui tirent parti de l'évolutivité, de la tolérance aux pannes et de l'isolement des ressources de Mesos.
  • Marathon est un PaaS privé construit sur Mesos. Il gère automatiquement les pannes matérielles ou logicielles et garantit qu'une application est «toujours active».
  • Singularité est un planificateur (API HTTP et interface Web) pour exécuter des tâches Mesos: processus longs, tâches ponctuelles et travaux planifiés.
  • SSSP est une application Web simple qui fournit un "Megaupload" en marque blanche pour le stockage et le partage de fichiers dans S3.

Traitement Big Data

  • Chapelle de Cray est un langage de programmation parallèle productif. Le planificateur Chapel Mesos vous permet d'exécuter des programmes Chapel sur Mesos.
  • Dpark est un clone Python de Spark, un framework de type MapReduce écrit en Python, fonctionnant sur Mesos.
  • Exelixi est un cadre distribué pour exécuter des algorithmes génétiques à grande échelle.
  • Hadoop: L'exécution de Hadoop sur Mesos distribue efficacement les tâches MapReduce sur un cluster entier.
  • Hama est un cadre informatique distribué basé sur des techniques de calcul parallèle synchrone en vrac pour des calculs scientifiques massifs, par exemple des algorithmes de matrice, de graphique et de réseau.
  • MPI est un système de transmission de messages conçu pour fonctionner sur une grande variété d'ordinateurs parallèles.
  • Étincelle est un système informatique en grappe rapide et polyvalent qui facilite l'écriture de travaux parallèles.
  • Orage est un système de calcul distribué en temps réel. Storm facilite le traitement fiable de flux de données illimités, faisant pour le traitement en temps réel ce que Hadoop a fait pour le traitement par lots.

Planification par lots

  • Chronos est un planificateur de travaux distribué qui prend en charge des topologies de travaux complexes. Il peut être utilisé comme un remplacement plus tolérant aux pannes pour cron.
  • Jenkins est un serveur d'intégration continue. Le plugin mesos-jenkins lui permet de lancer dynamiquement des travailleurs sur un cluster Mesos en fonction de la charge de travail.
  • JobServer est un planificateur et un processeur de travaux distribués qui permet aux développeurs de créer des Tasklets de traitement par lots personnalisés à l'aide de l'interface utilisateur Web pointer-cliquer.
  • Couple est un gestionnaire de ressources réparties permettant de contrôler les travaux par lots et les nœuds de calcul distribués.

Stockage de données

  • Cassandra est une base de données distribuée hautement disponible. L'évolutivité linéaire et la tolérance aux pannes éprouvée sur le matériel de base ou l'infrastructure cloud en font la plate-forme idéale pour les données critiques.
  • ElasticSearch est un moteur de recherche distribué. Mesos le rend facile à exécuter et à mettre à l'échelle.
  • Hypertable est un système de stockage et de traitement distribué, évolutif et hautes performances pour les données structurées et non structurées.

Conclusion

Des tendances telles que le cloud computing et les mégadonnées éloignent les organisations de la consolidation et se retrouvent dans des situations où elles pourraient avoir plusieurs systèmes distribués dédiés à des tâches spécifiques. Avec l'aide de l'exécuteur Docker pour Mesos, Mesos peut exécuter et gérer des conteneurs Docker en conjonction avec les frameworks Chronos et Marathon. Les conteneurs Docker offrent un moyen cohérent, compact et flexible de créer des packages d'application. La livraison d'applications avec Docker sur Mesos promet une plate-forme vraiment élastique, efficace et cohérente pour fournir une gamme d'applications sur site ou dans le cloud.

Publié à l'origine sur le blog Big Data de Sachin Puttur. Révisions apportées sous Creative Commons.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.