Consul - Introduction

Consul est un outil basé sur Hashicorp pour découvrir et configurer une variété de services différents dans votre infrastructure. Il est basé et construit sur Golang. L'une des principales raisons de construire Consul était de maintenir les services présents dans les systèmes distribués. Certaines des caractéristiques importantes fournies par Consul sont les suivantes.

  • Service Discovery - En utilisant DNS ou HTTP, les applications peuvent facilement trouver les services dont elles dépendent.

  • Health Check Status- Il peut fournir un nombre illimité de contrôles de santé. Il est utilisé par les composants de découverte de service pour acheminer le trafic loin des hôtes défectueux.

  • Key/Value Store - Il peut utiliser le magasin de clés / valeurs hiérarchique de Consul pour un certain nombre d'objectifs, y compris la configuration dynamique, le marquage des fonctionnalités, la coordination, l'élection du chef, etc.

  • Multi Datacenter Deployment- Consul prend en charge plusieurs centres de données. Il est utilisé pour créer des couches supplémentaires d'abstraction pour s'étendre à plusieurs régions.

  • Web UI - Consul fournit à ses utilisateurs une belle interface Web grâce à laquelle il peut être facile à utiliser et à gérer toutes les fonctionnalités de consul.

Découverte de service

La découverte de services est l'une des caractéristiques les plus importantes de Consul. Il est défini comme la détection de différents services et protocoles réseau à l'aide desquels un service est trouvé. L'utilisation de la découverte de services constitue une aubaine pour les systèmes distribués. C'est l'un des principaux problèmes auxquels sont confrontées les grandes industries d'aujourd'hui avec l'avancement des systèmes distribués dans leur environnement.

Comparaison avec Etcd et Zookeeper

Lorsque nous examinons d'autres outils de découverte de services dans ce domaine, nous avons deux options populaires. Certains acteurs majeurs de l'industrie du logiciel l'ont utilisé dans le passé. Ces outils sontEtcd et Zookeeper.

Considérons le tableau suivant pour comparer différents aspects de chaque outil. Nous comprendrons également ce que chacun d'eux utilise en interne.

Propriétés Consul Etcd Gardien de zoo
Interface utilisateur Disponible
RPC Disponible Disponible
Bilan de santé API HTTP API HTTP TCP
Valeur clé 3 modes de cohérence Bonne cohérence Forte cohérence
Système de jetons Disponible
Langue Golang Golang Java

Consul - Membres et agents

Les membres consul peuvent être définis comme la liste des différents agents et modes de serveur à l'aide desquels un cluster consul est déployé. Consul nous fournit une fonction de ligne de commande à l'aide de laquelle nous pouvons facilement lister tous les agents associés à consul.

L'agent consul est le processus de base du consul. L'agent gère les informations d'appartenance, enregistre les services, exécute des vérifications, répond aux requêtes, etc. Tout agent peut être exécuté dans l'un des deux modes suivants:Client ou Server. Ces deux modes peuvent être utilisés en fonction de leur rôle tel que décidé lors de l'utilisation de consul. L'agent consul nous aide en nous fournissant des informations énumérées ci-dessous.

  • Node name - Il s'agit du nom d'hôte de la machine.

  • Datacenter- Le centre de données dans lequel l'agent est configuré pour s'exécuter. Chaque nœud doit être configuré pour faire rapport à son centre de données.

  • Server- Il indique si l'agent s'exécute en mode serveur ou client. Les nœuds de serveur participent au quorum de consensus, stockant l'état du cluster et traitant les requêtes.

  • Client Addr- C'est l'adresse utilisée pour les interfaces client par l'agent. Il inclut les ports pour les interfaces HTTP, DNS et RPC.

  • Cluster Addr- Il s'agit de l'adresse et de l'ensemble de ports utilisés pour la communication entre les agents consuls d'un cluster. Cette adresse doit être accessible par tous les autres nœuds.

Dans le chapitre suivant, nous comprendrons l'architecture de Consul.