Présentation de Consul Template

Nous publions aujourd’hui Consul Template, une application autonome qui regorge de nouvelles fonctionnalités étonnantes.

Consul Template interroge une instance Consul et met à jour un nombre quelconque de modèles spécifiés sur le système de fichiers. En prime, Consul Template peut exécuter des commandes arbitraires lorsqu’une mise à jour de modèle se termine.

« Démo

« Cas d’utilisation

Consul Template peut interroger les entrées d’un service, les clés et les valeurs des clés dans Consul. La puissance de l’abstraction et du langage d’interrogation des modèles rend Consul Template parfait pour créer des configurations dynamiques telles que:

« Équilibreurs de proxy Apache/Nginx

Il n’est pas rare d’avoir plusieurs serveurs d’application proxiés derrière une instance de proxy unique, tournée vers le public. Cette configuration ressemble généralement à quelque chose comme:

<proxy balancer:="" frontend="">BalanceMember 1.2.3.4:80 BalanceMember 5.6.7.8:80</proxy>

Mais l’ajout et le retrait d’un nœud de l’équilibreur de charge est souvent un processus douloureux, long et fastidieux. Pire encore, lorsqu’un nœud frontal devient « malsain », un opérateur doit le retirer manuellement de l’équilibreur de charge. Consul Template rend tout ce processus trivial:

<Proxy balancer://frontend>{{range service "app.frontend"}} BalanceMember {{.Address}}{{end}}</Proxy>

Voici un exemple similaire pour une configuration Nginx:

upstream frontend { {{range service "app.frontend"}} server {{.Address}};{{end}}}

A mesure que les nœuds sont ajoutés et retirés de Consul, ils sont automatiquement ajoutés et retirés de la configuration de l’équilibreur de charge. Comme la méthode service de Consul Template n’interroge que les nœuds sains, les nœuds malsains sont également supprimés de l’équilibreur de charge dès qu’ils sont signalés comme étant hors service. Cela minimise à la fois les temps d’arrêt et l’intervention de l’opérateur afin que vous puissiez vous concentrer sur ce qui est important!

« Backends HAProxy

HAProxy est un logiciel d’équilibrage de charge très courant et très performant. Un fichier de configuration typique de HAProxy ressemble à :

backend frontendbalance roundrobinserver web1 web1.yourdomain.com:80 checkserver web2 web2.yourdomain.com:80 check

Cependant, tout comme l’équilibreur de proxy Apache/Nginx, l’ajout et la suppression de nœuds de HAProxy est une expérience douloureuse et souvent effrayante. Consul Template enlève la peur de HAProxy:

backend frontendbalance roundrobin{{range "app.frontend"}}service {{.ID}} {{.Address}}:{{.Port}}{{end}}

Vous pouvez remarquer que l’attribut check a été supprimé. Puisque nos contrôles de santé sont définis dans Consul, et que Consul Template ne renvoie que les nœuds sains à partir d’une requête de service, nous pouvons épargner à HAProxy le travail de vérification de la santé des nœuds et laisser cette logique à Consul.

Avec l’argument optionnel command, Consul Template peut déclencher automatiquement un rechargement de HAProxy lorsque le modèle est mis à jour. Comme les nœuds sont dynamiquement ajoutés et supprimés de Consul, votre équilibreur de charge sera immédiatement informé du changement, ce qui rend plus facile que jamais de minimiser les temps d’arrêt.

« Serveurs Varnish

Varnish est un puissant serveur de mise en cache qui prend en charge l’interrogation de plusieurs backends à partir desquels mettre en cache les données et les demandes de proxy. Un fichier de configuration typique de Varnish peut ressembler à :

import directors;backend app_01 { .host = "1.2.3.4"; .port = "8080"; }backend app_02 { .host = "5.6.7.8"; .port = "8080"; }sub vcl_init { new bar = directors.round_robin() bar.add_backend(app_01); bar.add_backend(app_02); }sub vcl_recv { set req.backend_hint = bar.backend(); }

Tout comme notre exemple HAProxy, Consul Template rend trivial le peuplement et la gestion dynamiques des backends Varnish :

import directors;{{range service "app.frontend"}}backend {{.ID}} { .host = "{{.Address}}"; .port = "{{.Port}}";}{{end}}sub vcl_init { new bar = directors.round_robin() {{range service "app.frontend"}} bar.add_backend({{.ID}});{{end}}}sub vcl_recv { set req.backend_hint = bar.backend();}

« Configurations d’applications

Le magasin clé-valeur intuitif et puissant permet aux développeurs et aux opérateurs d’applications de stocker des informations de configuration globales dans Consul. Consul Template se met dynamiquement à jour lorsqu’une modification est apportée à l’une de ces valeurs. Avec les pratiques actuelles de gestion de la configuration, il est courant d’avoir un modèle de configuration pour une application qui modifie certaines valeurs réglables pour l’application :

MaxWorkers 5 JobsPerSecond 11

Même en utilisant un système de gestion de la configuration dynamique, la configuration de l’application restera inchangée jusqu’à la prochaine exécution. Avec Consul Template, tout changement dans le magasin de valeurs clés est immédiatement propagé à tous les modèles qui écoutent cette valeur. Désormais, votre logiciel de gestion de la configuration peut écrire un modèle Consul:

MaxWorkers {{key "web/max-workers"}}JobsPerSecond {{key "web/jobs-per-second"}}

Ce modèle est maintenant connecté à Consul et recevra des mises à jour instantanées et dynamiques dès qu’un changement est poussé vers Consul. Vous n’avez plus besoin d’attendre une heure pour que la prochaine itération de votre système CM s’exécute.

« Fonctionnalités

Consul Template est bourré d’excellentes fonctionnalités, mais il nous est impossible de les énumérer toutes ! Voici quelques-unes des nombreuses fonctionnalités que vous trouverez dans Consul Template :

  • Quiescence – Consul Template est livré avec une quiescence intégrée et peut attendre intelligemment les changements d’une instance Consul. Cette fonctionnalité critique empêche les mises à jour fréquentes d’un modèle alors qu’un système fluctue.

  • Mode sec – Vous n’êtes pas sûr de l’état actuel de votre infrastructure ? Vous craignez qu’un changement de modèle ne casse un sous-système ? N’ayez plus aucune crainte car Consul Template est livré complet avec le mode -dry. En mode sec, Consul Template rendra le résultat dans STDOUT, afin qu’un opérateur puisse inspecter la sortie et décider si le changement de modèle est sûr.

  • CLI et Config – Préférez-vous tout spécifier sur la ligne de commande ? Ou bien vous utilisez un outil de gestion de configuration et préférez que les configurations soient écrites sur le disque ? Quelle que soit votre préférence, Consul Template vous couvre ! Grâce à la prise en charge intégrée de la HCL, Consul Template accepte un fichier de configuration, des drapeaux en ligne de commande ou un mélange des deux ! Ainsi, vous pouvez continuer à utiliser vos outils de gestion de configuration existants en tandem avec Consul Template.

  • Débogage virgule – Même lorsque vous pensez qu’il est parfait, il arrive que les systèmes échouent. Pour ces moments critiques, Consul Template dispose d’un système de journalisation détaillé qui peut être utilisé pour retrouver presque tous les problèmes.

« Conclusion

.

Leave a Reply