Consul, développé par HashiCorp, est une solution pour la découverte de services et la configuration, conçu pour fonctionner de manière distribuée, hautement disponible et évolutive pour des milliers de nœuds.
Consul est utilisé pour la découverte de services, les configurations clé/valeur et la partie Health Checking. Il fonctionne de la même manière que Zookeeper, doozerd ou etcd, mais ajoute une interface DNS pour la découverte de services, utile pour les services existants ou anciens, et se présente comme une solution avec une meilleure scalabilité en utilisant un protocole de gossip. Consul fournit des services de monitoring dans une architecture entièrement distribuée contrairement à d'autres outils. Nagios utilise des serveurs centraux pour interroger des services et Sensu un broker central pour gérer les notifications de service, ce qui peut entraîner des problèmes d'échelle.
Il existe également des différences avec des outils plus modernes de découverte de service. SkyDNS fournit également une interface pour effectuer des requêtes DNS, mais les contrôles de monitoring utilisent un système de heartbeat et des TTLs, alors que Consul permet de définir des vérifications personnalisées, ainsi que le support de multiples datacenters nativement. SmartStack, un projet lancé par Airbnb, est un framework de découverte et enregistrement de services composé de ZooKeeper, HAProxy et deux projets open source Airbnb, Synapse et Nerve, utilisé pour la découverte et l'enregistrement de services. Consul est le seul outil utilisant un protocole de gossip, réclamant une meilleure évolutivité et le suivi entièrement dynamique des nœuds du cluster. Une comparaison avec d'autres logiciels explique plus en détail les différences avec les outils mentionnés et d'autres généralement utilisés dans les mêmes scénarios.
Les clusters Consul sont composés des clients et des serveurs, la principale différence étant que seuls les derniers stockent des données, et utilisent la détection automatique. Lectures et écritures peuvent être faites sur n'importe quel membre du cluster. Les services sont enregistrés à l'aide des fichiers de configuration ou via une API HTTP contre n'importe quel agent (client ou serveur) dans le cluster. Les services enregistrés et les nœuds peuvent être interrogés en utilisant à la fois une interface HTTP et une interface DNS, ce qui le rend facile à utiliser sans modification des services existants.
Le protocole de gossip utilisé pour gérer les messages d'adhésion et de diffusion au cluster est fourni par la bibliothèque Serf, un autre projet Hashicorp, basé sur le papier "SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol" publié par le Département d'informatique à l'Université Cornell.
Consul peut être approvisionné avec Puppet, comme décrit par Ben Schwartz, qui a inclus des exemples utilisant des box Vagrant, montrant comment activer une application de démonstration Spring Boot en utilisant un module Puppet pour configurer Consul et le module Dnsmasq de Puppet qui route à l'agent Consul toutes les requêtes DNS se terminant en .consul.