Maak kennis met Consul Template

Vandaag brengen we Consul Template uit, een standalone applicatie die boordevol geweldige nieuwe functies zit.

Consul Template vraagt een Consul-instantie op en werkt een willekeurig aantal gespecificeerde sjablonen op het bestandssysteem bij. Als extra bonus kan Consul Template willekeurige commando’s uitvoeren wanneer een template update is voltooid.

“Demo

“Use Cases

Consul Template kan een service entries, keys, en key values in Consul queryen. De krachtige abstractie en de sjabloon query-taal maakt Consul Sjabloon perfect voor het maken van dynamische configuraties zoals:

“Apache/Nginx Proxy Balancers

Het is niet ongewoon om meerdere applicatieservers te hebben die achter een enkele, publiek gerichte proxy-instantie proxied. Deze configuratie ziet er meestal ongeveer zo uit:

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

Maar het toevoegen en verwijderen van een node van de load balancer is vaak een pijnlijk, tijdrovend en vervelend proces. Erger nog, wanneer een frontend node “ongezond” wordt, moet een operator deze handmatig verwijderen van de load balancer. Consul Template maakt dit hele proces triviaal:

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

Hier is een vergelijkbaar voorbeeld voor een Nginx configuratie:

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

Als nodes worden toegevoegd en verwijderd uit Consul, worden ze automatisch toegevoegd en verwijderd uit de load balancer configuratie. Omdat de service-methode van Consul Template alleen gezonde nodes opvraagt, worden ongezonde nodes ook van de loadbalancer verwijderd zodra ze als down worden gerapporteerd. Dit minimaliseert zowel downtime als operator-interventie, zodat u zich kunt concentreren op wat belangrijk is!

“HAProxy Backends

HAProxy is zeer gebruikelijke, high-performance load balancing software. Een typisch HAProxy configuratiebestand ziet er zo uit:

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

Maar net als de Apache/Nginx proxy balancer is het toevoegen en verwijderen van nodes van HAProxy een pijnlijke en vaak beangstigende ervaring. Consul Template neemt de angst weg bij HAProxy:

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

Je zult zien dat het check attribuut is verwijderd. Aangezien onze gezondheidscontroles in Consul zijn gedefinieerd, en Consul Template alleen gezonde nodes retourneert van een service query, kunnen we HAProxy het werk besparen van het controleren van de gezondheid van de nodes en die logica aan Consul overlaten.

Met het optionele commando-argument kan Consul Template automatisch een herlading van HAProxy triggeren wanneer het sjabloon wordt bijgewerkt. Als nodes dynamisch worden toegevoegd en verwijderd uit Consul, zal uw load balancer onmiddellijk worden geïnformeerd over de verandering, waardoor het makkelijker is dan ooit om downtime te minimaliseren.

“Varnish Servers

Varnish is een krachtige caching server die ondersteuning biedt voor het bevragen van meerdere backends van waaruit gegevens en proxy verzoeken te cachen. Een typische Varnish configuratie bestand kan eruit zien als:

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(); }

Net als onze HAProxy voorbeeld, Consul Template maakt het triviaal om dynamisch te vullen en te beheren Varnish backends:

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();}

“Application Configurations

De intuïtieve maar krachtige key-value store maakt het mogelijk applicatie-ontwikkelaars en operators om globale configuratie-informatie op te slaan in Consul. Consul Template wordt dynamisch bijgewerkt wanneer een wijziging in een van die waarden optreedt. Met de huidige configuratiebeheerpraktijken is het gebruikelijk om een configuratiesjabloon voor een toepassing te hebben die een aantal afstembare waarden voor de toepassing wijzigt:

MaxWorkers 5 JobsPerSecond 11

Zelfs met behulp van een dynamisch configuratiebeheersysteem blijft de configuratie van de toepassing ongewijzigd tot de volgende run. Met Consul Template wordt iedere wijziging in de key-value store onmiddellijk doorgevoerd naar alle templates die naar die waarde luisteren. Nu kan uw configuratiebeheersoftware een Consul-sjabloon schrijven:

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

Dit sjabloon is nu verbonden met Consul en ontvangt onmiddellijke, dynamische updates zodra een wijziging naar Consul wordt gepushed. U hoeft niet langer een uur te wachten op de volgende iteratie van uw CM systeem.

“Features

Consul Template zit boordevol geweldige features, maar we kunnen ze onmogelijk allemaal opnoemen! Dit zijn slechts enkele van de vele functies die u in Consul Template vindt:

  • Traagheid – Consul Template wordt geleverd met ingebouwde stilstand en kan op intelligente wijze wachten op wijzigingen van een Consul-instantie. Deze essentiële functie voorkomt frequente updates van een sjabloon terwijl een systeem fluctueert.

  • Dry Mode – Niet zeker van de huidige staat van uw infrastructuur? Bent u bang dat een wijziging in een sjabloon een subsysteem kapotmaakt? Vrees niet langer, want Consul Template wordt compleet geleverd met -dry-modus. In de droge modus rendert Consul Template het resultaat naar STDOUT, zodat een operator de uitvoer kan inspecteren en kan beslissen of de sjabloonwijziging veilig is.

  • CLI en Config – Geeft u er de voorkeur aan alles op de opdrachtregel te specificeren? Of gebruikt u een configuratiebeheertool en hebt u liever dat configuraties naar schijf worden geschreven? Wat uw voorkeur ook is, met Consul Template zit u altijd goed! Met ingebouwde ondersteuning voor HCL accepteert Consul Template een configuratiebestand, commandoregelvlaggen, of een mix van beide! Op deze manier kunt u uw bestaande hulpprogramma’s voor configuratiebeheer blijven gebruiken in combinatie met Consul Template.

  • Verbose Debugging – Zelfs wanneer u denkt dat het perfect is, falen systemen soms. Voor die kritieke momenten beschikt Consul Template over een gedetailleerd logsysteem dat kan worden gebruikt om vrijwel elk probleem op te sporen.

“Conclusie

Leave a Reply