Avez vous déjà entendu parler des registry de services ? zookeeper en est un exemple ou encore cosnul. C’est ce dernier que je vous propose de découvrir. Consul est un outil léger qui va vous permettre de suivre pour vous les instances de vos applications.
Ainsi Consul va gérer les pools de services à savoir sur quels serveurs sont présentes les instances de vos applications (une ou plusieurs dans le cas de scaling). Il vérifiera pour vous l’état de santé de chacun des serveurs suivant vos règles de check.
Une registry de service va stocker comme un répertoire téléphonique comment joindre une application : les ips et les ports qui vont répondre. On parle de service car il s’agit de parler d’un pool pour une même application.
Dans notre exemple, nous allons utiliser cette registry pour alimenter haproxy en service. Haproxy permettra de load-balancer les requêtes sur les différentes machines permettant de répondre pour une application.
Présentation de Consul
Installation de notre serveur Consul
Une registry devient rapidement centrale et vitale pour une infrastructure. Pour les noeuds master, il est nécessaire d’envisager un cluster. 3 serveurs permettront d’assurer l’élection d’un master pour le bon respect du quorum.
Mise en place du service systemd pour Consul
Pour faciliter l’utilisation de Consul, il est préférable de créer un service systemd. Cela permettra de faire notamment des service start ou stop.
Installation d’un agent Consul
Pour enregistrer des services/instances dans la registry tenue par les master, il est nécessaire d’installer un agent sur chacune des machines applicatives. Ces agents informeront en permanence la registry de l’état de l’instance (up, down…).
Configuration d’un healthcheck
Elément essentiel dans notre architecture, le healthcheck va permettre de vérifier l’état de l’instance d’un service. Ce check peut être simple comme un simple ping ou curl mais il peut aussi se faire sur la base d’un script personnalisé pour vérifier plus finement l’état du service. Plusieurs healthcheck peuvent aussi mis en place pour une même instance.
Utilisation de consul-template
Consul-template va permettre d’éditer automatiquement la configuration de haproxy. A partir d’un template, cet outil va modifier un fichier de configuration (ex. haproxy.cfg) et en cas de changement il sera en mesure de faire une action par exemple un reload de service (pour prendre en compte cette nouvelle configuration).