Prezentăm Consul Template

Astăzi lansăm Consul Template, o aplicație independentă care este plină de caracteristici noi și uimitoare.

Consul Template interoghează o instanță Consul și actualizează orice număr de șabloane specificate în sistemul de fișiere. Ca un bonus suplimentar, Consul Template poate executa comenzi arbitrare atunci când se finalizează o actualizare de șablon.

„Demo

„Use Cases

Consul Template poate interoga o intrare de servicii, chei și valori de chei în Consul. Limbajul puternic de abstractizare și de interogare a șabloanelor face ca Consul Template să fie perfect pentru crearea de configurații dinamice, cum ar fi:

„Apache/Nginx Proxy Balancers

Nu este neobișnuit să aveți mai multe servere de aplicații proxiate în spatele unei singure instanțe de proxy orientate spre public. Această configurație arată de obicei ceva de genul:

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

Dar adăugarea și eliminarea unui nod de la echilibrul de sarcină este adesea un proces dureros, consumator de timp și plictisitor. Chiar mai rău, atunci când un nod frontend devine „nesănătos”, un operator trebuie să îl elimine manual din load balancer. Șablonul Consul face ca acest întreg proces să fie trivial:

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

Iată un exemplu similar pentru o configurație Nginx:

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

În timp ce nodurile sunt adăugate și eliminate din Consul, acestea sunt adăugate și eliminate automat din configurația echilibrului de sarcină. Deoarece metoda service a șablonului Consul interoghează numai nodurile sănătoase, nodurile nesănătoase sunt, de asemenea, eliminate din echilibrul de sarcină imediat ce sunt raportate ca fiind oprite. Acest lucru minimizează atât timpul de nefuncționare, cât și intervenția operatorului, astfel încât să vă puteți concentra pe ceea ce este important!

„HAProxy Backends

HAProxy este un software de echilibrare a încărcăturii foarte comun și de înaltă performanță. Un fișier tipic de configurare HAProxy arată astfel:

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

Dar, la fel ca și în cazul echilibrului proxy Apache/Nginx, adăugarea și eliminarea nodurilor din HAProxy este o experiență dureroasă și adesea înfricoșătoare. Șablonul Consul înlătură teama din HAProxy:

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

Puteți observa că atributul check a fost eliminat. Deoarece verificările noastre de sănătate sunt definite în Consul, iar Consul Template returnează doar nodurile sănătoase dintr-o interogare de serviciu, putem scuti HAProxy de munca de verificare a sănătății nodurilor și putem lăsa această logică pe seama Consul.

Cu ajutorul argumentului opțional command, Consul Template poate declanșa automat o reîncărcare a HAProxy atunci când șablonul este actualizat. Pe măsură ce nodurile sunt adăugate și eliminate în mod dinamic din Consul, echilibrul de sarcină va fi informat imediat despre schimbare, ceea ce face mai ușoară ca niciodată reducerea la minimum a timpilor de nefuncționare.

„Servere Varnish

Varnish este un server de cache puternic care suportă interogarea mai multor backend-uri din care să stocheze date și cereri proxy. Un fișier tipic de configurare Varnish ar putea arăta astfel:

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

La fel ca în exemplul nostru HAProxy, Consul Template face trivială popularea și gestionarea dinamică a backend-urilor 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();}

„Application Configurations

Magazinul intuitiv, dar puternic, de valori cheie permite dezvoltatorilor și operatorilor de aplicații să stocheze informații de configurare globală în Consul. Șablonul Consul se va actualiza în mod dinamic atunci când are loc o modificare a uneia dintre aceste valori. Cu practicile actuale de gestionare a configurației, este obișnuit să existe un șablon de configurare pentru o aplicație care modifică unele valori reglabile pentru aplicație:

MaxWorkers 5 JobsPerSecond 11

Chiar dacă se utilizează un sistem de gestionare dinamică a configurației, configurația aplicației va rămâne neschimbată până la următoarea execuție. Cu Consul Template, orice modificare în stocul de valori cheie este propagată imediat la toate șabloanele care ascultă acea valoare. Acum, software-ul dvs. de gestionare a configurației poate scrie un șablon Consul Template:

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

Acest șablon este acum conectat cu Consul și va primi actualizări instantanee, dinamice, de îndată ce o modificare este transmisă către Consul. Nu mai trebuie să așteptați o oră pentru ca următoarea iterație a sistemului dvs. de CM să ruleze.

„Caracteristici

Consul Template este plin de caracteristici extraordinare, dar nu este posibil să le enumerăm pe toate! Iată doar câteva dintre numeroasele caracteristici pe care le veți găsi în Consul Template:

  • Quiescence – Consul Template este livrat cu quiescență încorporată și poate aștepta în mod inteligent modificări de la o instanță Consul. Această caracteristică critică previne actualizările frecvente ale unui șablon în timp ce un sistem este fluctuant.

  • Dry Mode – Nu sunteți sigur de starea actuală a infrastructurii dvs. Vă este teamă că o schimbare de șablon ar putea strica un subsistem? Nu vă mai temeți pentru că Consul Template vine complet cu modul -dry. În modul uscat, Consul Template va reda rezultatul pe STDOUT, astfel încât un operator să poată inspecta rezultatul și să decidă dacă modificarea șablonului este sigură.

  • CLI și Config – Preferați să specificați totul pe linia de comandă? Sau folosiți un instrument de gestionare a configurației și preferați configurațiile scrise pe disc? Oricare ar fi preferința dumneavoastră, Consul Template vă acoperă! Cu suport încorporat pentru HCL, Consul Template acceptă un fișier de configurare, stegulețe de linie de comandă sau un mix de ambele! În acest fel, puteți continua să utilizați instrumentele dvs. existente de gestionare a configurației în tandem cu Consul Template.

  • Verbose Debugging – Chiar și atunci când credeți că este perfect, uneori sistemele dau greș. Pentru acele momente critice, Consul Template are un sistem detaliat de jurnalizare care poate fi folosit pentru a depista aproape orice problemă.

„Concluzie

Leave a Reply