Introduction aux composants du système CoreOS

Qu’est-ce que CoreOS?

CoreOS est une puissante distribution Linux conçue pour simplifier la gestion de déploiements de grande envergure et évolutifs sur une infrastructure variée. Basé sur une version de Chrome OS, CoreOS maintient un système hôte léger et utilise les conteneurs Docker pour toutes les applications. Ce système fournit une isolation des processus et permet également aux applications d’être facilement déplacées d’un cluster à l’autre.

Pour gérer ces clusters, CoreOS utilise un magasin clé-valeur distribué globalement, appelé + etcd +, pour transmettre les données de configuration entre les nœuds. Ce composant est également la plate-forme de découverte de service, permettant aux applications d’être configurées de manière dynamique en fonction des informations disponibles via la ressource partagée.

Afin de planifier et de gérer les applications sur l’ensemble du cluster, un outil appelé + flotte + est utilisé. Fleet sert de système d’initialisation à l’échelle du cluster, qui peut être utilisé pour gérer les processus de l’ensemble du cluster. Cela facilite la configuration d’applications hautement disponibles et la gestion du cluster à partir d’un point unique. Pour ce faire, il relie le système + systemd + init de chaque nœud individuel.

Dans ce guide, nous vous présenterons quelques concepts clés de CoreOS et présenterons chacun des composants essentiels permettant au système de fonctionner. Dans un guide ultérieur, nous aborderons https://www.digitalocean.com/community/tutorials/how-to-set-up-a-coreos-cluster-on-digitaloceanhow pour commencer à utiliser CoreOS sur DigitalOcean] .

Conception du système

La conception générale d’une installation CoreOS s’articule autour de la mise en cluster et de la conteneurisation.

Le système hôte principal est relativement simple et renonce à bon nombre des «fonctionnalités» communes des serveurs traditionnels. En fait, CoreOS n’a même pas de gestionnaire de paquets. Au lieu de cela, toutes les applications supplémentaires doivent s’exécuter en tant que conteneurs Docker, ce qui permet l’isolation, la portabilité et la gestion externe des services.

Au démarrage, CoreOS lit un fichier de configuration fourni par l’utilisateur, appelé «cloud-config», pour effectuer une configuration initiale. Ce fichier permet à CoreOS de se connecter aux autres membres d’un cluster, de démarrer des services essentiels et de reconfigurer des paramètres importants. C’est ainsi que CoreOS peut rejoindre immédiatement un cluster en tant qu’unité de travail lors de sa création.

Habituellement, le fichier «cloud-config» indique au minimum à l’hôte comment rejoindre un cluster existant et lui commande de démarrer deux services appelés + etcd + et + flotte +. Ces trois actions sont liées. Ils permettent au nouvel hôte de se connecter aux serveurs existants et fournissent les outils nécessaires à la configuration et à la gestion de chaque nœud du cluster. Fondamentalement, il s’agit de la configuration requise pour initialiser un noeud CoreOS dans un cluster.

Le démon + etcd + est utilisé pour stocker et distribuer des données sur chacun des hôtes d’un cluster. Ceci est utile pour conserver des configurations cohérentes et sert également de plate-forme avec laquelle les services peuvent s’annoncer. Ce mécanisme de découverte de service peut être utilisé par d’autres services pour interroger des informations afin d’ajuster leurs détails de configuration. Par exemple, un équilibreur de charge pourrait interroger + etcd + pour les adresses IP de plusieurs serveurs Web principaux lors de son démarrage.

Le démon + flotte + est essentiellement un système d’initialisation distribué. Cela fonctionne en se connectant au système + systemd + init sur chaque hôte individuel dans un cluster. Il gère la planification des services, en contraignant les cibles de déploiement en fonction de critères définis par l’utilisateur. Les utilisateurs peuvent conceptualiser le cluster comme une seule unité avec + flotte +, au lieu de s’inquiéter de chaque serveur individuel.

Maintenant que vous avez une idée générale du système dans son ensemble, voyons quelques détails supplémentaires sur chacun des composants spécifiques. Comprendre le rôle que joue chacun de ces facteurs est important.

Un aperçu de base de Docker

Docker est un système de conteneurisation qui utilise LXC, également appelé conteneurs Linux, et utilise un espacement de noms de noyau et des groupes de contrôle afin d’isoler les processus.

L’isolation permet de garder l’environnement d’exécution de l’application propre et prévisible. Cependant, l’un des principaux avantages de ce système est qu’il rend la distribution de logiciels triviale. Un conteneur Docker doit pouvoir fonctionner exactement de la même manière, quel que soit l’environnement d’exploitation. Cela signifie qu’un conteneur construit sur un ordinateur portable peut s’exécuter de manière transparente sur un cluster à l’échelle du centre de données.

Docker vous permet de distribuer un environnement logiciel en fonctionnement avec toutes les dépendances nécessaires. Les conteneurs Docker peuvent fonctionner côte à côte avec d’autres conteneurs, mais agissent en tant que serveur individuel. L’avantage des conteneurs Docker sur la virtualisation réside dans le fait que Docker ne cherche pas à émuler un système d’exploitation complet, mais implémente uniquement les composants nécessaires à l’exécution de l’application. Pour cette raison, Docker présente de nombreux avantages de la virtualisation, mais sans le coût élevé en ressources.

CoreOS exploite les conteneurs Docker pour n’importe quel logiciel en dehors du petit ensemble inclus dans l’installation de base. Cela signifie que presque tout devra fonctionner dans un conteneur. Bien que cela puisse sembler fastidieux au début, cela facilite considérablement l’orchestration de cluster. CoreOS est conçu pour être manipulé principalement au niveau du cluster, pas au niveau des serveurs individuels.

Cela facilite la distribution des services et la répartition de votre charge sous CoreOS. Les outils et services inclus vous permettront de démarrer des processus sur l’un des nœuds disponibles dans les contraintes fournies. Docker permet à ces services et tâches d’être distribués sous forme de blocs autonomes au lieu d’applications devant être configurées sur chaque nœud.

Un aperçu de base de Etcd

Afin de fournir un ensemble cohérent de données globales à chacun des nœuds d’un cluster et d’activer la fonctionnalité de découverte de service, un service appelé + etcd + a été développé.

Le service etcd est un magasin clé-valeur hautement disponible qui peut être utilisé par chaque nœud pour obtenir des données de configuration, des informations de requête sur les services en cours d’exécution et des informations de publication qui devraient être connues des autres membres. Chaque nœud exécute son propre client etcd. Ceux-ci sont configurés pour communiquer avec les autres clients du cluster afin de partager et de distribuer des informations.

Les applications souhaitant extraire des informations du magasin doivent simplement se connecter à l’interface + etcd + sur leur ordinateur local. Toutes les données + etcd + seront disponibles sur chaque noeud, quel que soit le lieu où elles sont réellement stockées, et chaque valeur stockée sera distribuée et répliquée automatiquement dans tout le cluster. Les choix des chefs sont également traités automatiquement, ce qui rend la gestion du magasin de clés assez triviale.

Pour interagir avec les données etcd, vous pouvez soit utiliser la simple API HTTP / JSON (accessible à + ​​http: //127.0.0.1: 4001 / v2 / keys / + par défaut), ou vous pouvez utiliser un utilitaire inclus appelé ` + etcdctl + pour manipuler ou lire des données. La commande `+ etcdctl + et l’API HTTP sont des moyens simples et prévisibles d’interagir avec le magasin.

Il est important de comprendre que l’API HTTP est également accessible aux applications exécutées dans les conteneurs Docker. Cela signifie que la configuration de conteneurs individuels peut prendre en compte les valeurs stockées dans etcd.

Un aperçu de base de la flotte

Afin d’orchestrer les clusters CoreOS que vous construisez, un outil appelé + flotte + est utilisé. Un concept assez simple, flotte agit comme un système init à l’échelle du cluster.

Chaque nœud individuel dans un environnement en cluster exploite son propre système classique + systemd + init. Ceci est utilisé pour démarrer et gérer les services sur la machine locale. De manière simplifiée, la flotte fournit une interface permettant de contrôler chacun des systèmes + systemd + des membres du cluster.

Vous pouvez démarrer ou arrêter des services ou obtenir des informations d’état sur les processus en cours d’exécution sur l’ensemble de votre cluster. Cependant, la flotte fait quelques choses importantes pour rendre cela plus utilisable. Il gère le mécanisme de distribution des processus afin de pouvoir démarrer les services sur des hôtes moins occupés.

Vous pouvez également spécifier des conditions de placement pour les services que vous exécutez. Vous pouvez insister sur le fait qu’un service doit ou ne doit pas être exécuté sur certains hôtes en fonction de leur emplacement, de ce qu’ils sont déjà en cours d’exécution, etc. Fleet exploitant systemd pour démarrer les processus locaux, chacun des fichiers définissant les services est un fichier unité systemd (avec quelques options personnalisées). Vous pouvez transmettre ces fichiers de configuration à la flotte une seule fois et les gérer pour l’ensemble du cluster.

Cette flexibilité facilite la conception de configurations hautement disponibles. Par exemple, vous pouvez exiger que chacun de vos conteneurs de serveur Web soit déployé sur des nœuds distincts. Vous pouvez également vous assurer qu’un conteneur auxiliaire est déployé uniquement sur les noeuds exécutant le conteneur parent.

Tous les nœuds membres peuvent être utilisés pour gérer le cluster à l’aide de l’utilitaire + fleetctl +. Cela vous permet de planifier des services, de gérer des nœuds et de voir l’état général de vos systèmes. Le programme + fleetctl + sera votre interface principale avec votre cluster.

Conclusion

CoreOS peut être différent de la plupart des autres distributions Linux que vous connaissez peut-être. Chacune des décisions de conception a été prise en gardant à l’esprit la facilité de gestion des clusters et la portabilité des applications. Cela a abouti à une distribution puissante et ciblée conçue pour répondre aux besoins d’infrastructure moderne et de dimensionnement des applications.

Pour en savoir plus sur la mise en route, consultez notre guide à l’adresse avoir un cluster CoreOS. opérationnel sur DigitalOcean.