Představujeme šablonu Consul
Dnes vydáváme samostatnou aplikaci Consul Template, která je plná úžasných nových funkcí.
Šablona Consul se dotazuje instance Consul a aktualizuje libovolný počet zadaných šablon v souborovém systému. Jako bonus může Consul Template po dokončení aktualizace šablony spustit libovolné příkazy.
„Demo
„Případy použití
Consul Template se může dotazovat na položky služby, klíče a hodnoty klíčů v systému Consul. Díky výkonné abstrakci a dotazovacímu jazyku šablony je Consul Template ideální pro vytváření dynamických konfigurací, jako například:
„Apache/Nginx Proxy Balancers
Není neobvyklé mít více aplikačních serverů proxy za jedinou, veřejně přístupnou instancí proxy. Tato konfigurace obvykle vypadá takto:
<proxy balancer:="" frontend="">BalanceMember 1.2.3.4:80 BalanceMember 5.6.7.8:80</proxy>
Přidání a odebrání uzlu z vyrovnávače zátěže je však často bolestivý, časově náročný a zdlouhavý proces. Ještě horší je, že když se frontendový uzel stane „nezdravým“, musí jej operátor ručně odebrat z vyrovnávače zátěže. Díky šabloně Consul je celý tento proces triviální:
<Proxy balancer://frontend>{{range service "app.frontend"}} BalanceMember {{.Address}}{{end}}</Proxy>
Tady je podobný příklad pro konfiguraci Nginx:
upstream frontend { {{range service "app.frontend"}} server {{.Address}};{{end}}}
Při přidávání a odebírání uzlů ze systému Consul jsou uzly automaticky přidávány a odebírány z konfigurace load balanceru. Protože metoda service
šablony Consul se dotazuje pouze na zdravé uzly, jsou nezdravé uzly také odstraněny z vyrovnávače zátěže, jakmile jsou nahlášeny jako nefunkční. Tím se minimalizují prostoje i zásahy obsluhy, takže se můžete soustředit na to, co je důležité!“
„HAProxy Backends
HAProxy je velmi běžný, vysoce výkonný software pro vyvažování zátěže. Typický konfigurační soubor HAProxy vypadá takto:
backend frontendbalance roundrobinserver web1 web1.yourdomain.com:80 checkserver web2 web2.yourdomain.com:80 check
Stejně jako u proxy balanceru Apache/Nginx je však přidávání a odebírání uzlů HAProxy bolestivou a často děsivou zkušeností. Šablona Consul vás zbaví strachu z HAProxy:
backend frontendbalance roundrobin{{range "app.frontend"}}service {{.ID}} {{.Address}}:{{.Port}}{{end}}
Můžete si všimnout, že atribut check
byl odstraněn. Protože naše kontroly stavu jsou definovány v Consulu a Consul Template vrací pouze zdravé uzly z dotazu na službu, můžeme HAProxy ušetřit práci s kontrolou stavu uzlů a přenechat tuto logiku Consulu.
Pomocí nepovinného argumentu příkazu může Consul Template automaticky vyvolat opětovné načtení HAProxy při aktualizaci šablony. Jakmile jsou uzly dynamicky přidávány a odebírány ze systému Consul, váš load balancer bude o změně okamžitě informován, takže je snazší než kdy dříve minimalizovat prostoje.“
„Servery Varnish
Varnish je výkonný cachovací server, který podporuje dotazování více backendů, z nichž ukládá data do mezipaměti a proxy požadavky. Typický konfigurační soubor Varnish může vypadat takto:
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(); }
Stejně jako náš příklad HAProxy umožňuje šablona Consul triviální dynamické naplňování a správu backendů 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();}
„Konfigurace aplikací
Intuitivní a přitom výkonné úložiště klíč-hodnota umožňuje vývojářům a provozovatelům aplikací ukládat v Consulu globální konfigurační informace. Šablona Consul se dynamicky aktualizuje, když dojde ke změně některé z těchto hodnot. Při dnešních postupech správy konfigurace je běžné mít šablonu konfigurace aplikace, která mění některé laditelné hodnoty aplikace:
MaxWorkers 5 JobsPerSecond 11
I při použití dynamického systému správy konfigurace zůstane konfigurace aplikace až do dalšího spuštění nezměněna. Pomocí šablony Consul se jakákoli změna v úložišti klíčových hodnot okamžitě promítne do všech šablon, které na tuto hodnotu slyší. Nyní může váš software pro správu konfigurace napsat šablonu Consul:
MaxWorkers {{key "web/max-workers"}}JobsPerSecond {{key "web/jobs-per-second"}}
Tato šablona je nyní propojena se systémem Consul a bude dostávat okamžité dynamické aktualizace, jakmile bude změna odeslána do systému Consul. Už nemusíte čekat hodinu, než se spustí další iterace vašeho systému CM.
„Funkce
Šablona Consul je nabitá skvělými funkcemi, ale není v našich silách je všechny vyjmenovat! Zde je jen několik z mnoha funkcí, které v šabloně Consul najdete:
-
Klid – Šablona Consul je dodávána s vestavěným klidem a dokáže inteligentně čekat na změny z instance Consul. Tato kritická funkce zabraňuje častým aktualizacím šablony v době, kdy systém kolísá.
-
Suchý režim – Nejste si jisti aktuálním stavem své infrastruktury? Bojíte se, že by změna šablony mohla rozbít podsystém? Už se nemusíte bát, protože šablona Consul je vybavena kompletním režimem
-dry
. V suchém režimu bude Consul Template vykreslovat výsledek do STDOUT, takže operátor může zkontrolovat výstup a rozhodnout, zda je změna šablony bezpečná. -
CLI a konfigurace – Dáváte přednost zadávání všeho na příkazovém řádku? Nebo používáte nástroj pro správu konfigurace a dáváte přednost konfiguracím zapsaným na disk? Ať už dáváte přednost čemukoli, šablona Consul je pro vás připravena! Díky vestavěné podpoře HCL přijímá Consul Template konfigurační soubor, příznaky příkazového řádku nebo kombinaci obojího! Můžete tak nadále používat své stávající nástroje pro správu konfigurace společně se šablonou Consul Template.
-
Verbose Debugging – I když si myslíte, že je vše dokonalé, někdy systémy selžou. Pro tyto kritické okamžiky má šablona Consul Template podrobný systém protokolování, pomocí kterého lze vystopovat téměř jakýkoli problém.
„Závěr
.
Leave a Reply