A Consul Template bemutatása
A mai napon megjelentetjük a Consul Template-t, egy önálló alkalmazást, amely tele van csodálatos új funkciókkal.
A Consul Template lekérdez egy Consul példányt, és tetszőleges számú megadott sablont frissít a fájlrendszerben. További bónuszként a Consul Template tetszőleges parancsokat tud végrehajtani, amikor egy sablonfrissítés befejeződik.
“Demo
“Felhasználási esetek
A Consul Template lekérdezhet egy szolgáltatás bejegyzéseket, kulcsokat és kulcsértékeket a Consulban. Az erőteljes absztrakció és a sablon lekérdezési nyelv teszi a Consul Template-et tökéletessé dinamikus konfigurációk létrehozásához, mint például:
“Apache/Nginx proxy kiegyensúlyozók
Nem ritka, hogy több alkalmazáskiszolgálót proxyként egy egyetlen, nyilvános proxypéldány mögött helyeznek el. Ez a konfiguráció általában valahogy így néz ki:
<proxy balancer:="" frontend="">BalanceMember 1.2.3.4:80 BalanceMember 5.6.7.8:80</proxy>
De egy csomópont hozzáadása és eltávolítása a terheléselosztóhoz gyakran fájdalmas, időigényes és fárasztó folyamat. Még rosszabb, hogy amikor egy frontend-csomópont “egészségtelenné” válik, az üzemeltetőnek kézzel kell eltávolítania a terheléselosztóból. A Consul sablon triviálissá teszi ezt az egész folyamatot:
<Proxy balancer://frontend>{{range service "app.frontend"}} BalanceMember {{.Address}}{{end}}</Proxy>
Itt egy hasonló példa egy Nginx konfigurációra:
upstream frontend { {{range service "app.frontend"}} server {{.Address}};{{end}}}
Amint a csomópontokat hozzáadjuk és eltávolítjuk a Consulból, automatikusan hozzáadjuk és eltávolítjuk őket a terheléselosztó konfigurációból. Mivel a Consul sablon service
módszere csak az egészséges csomópontokat kérdezi le, az egészségtelen csomópontok is eltávolításra kerülnek a terheléselosztóból, amint leállást jelentenek. Ez minimalizálja mind a leállási időt, mind a kezelői beavatkozást, így Ön a fontos dolgokra koncentrálhat!”
“HAProxy Backends
A HAProxy egy nagyon elterjedt, nagy teljesítményű terheléselosztó szoftver. Egy tipikus HAProxy konfigurációs fájl így néz ki:
backend frontendbalance roundrobinserver web1 web1.yourdomain.com:80 checkserver web2 web2.yourdomain.com:80 check
Az Apache/Nginx proxy balancerhez hasonlóan azonban a HAProxy csomópontok hozzáadása és eltávolítása fájdalmas és gyakran ijesztő élmény. A Consul Template elveszi a félelmet a HAProxy-tól:
backend frontendbalance roundrobin{{range "app.frontend"}}service {{.ID}} {{.Address}}:{{.Port}}{{end}}
Elképzelhető, hogy a check
attribútumot eltávolítottuk. Mivel az állapotellenőrzéseinket a Consulban definiáljuk, és a Consul Template csak egészséges csomópontokat ad vissza egy szolgáltatás-lekérdezésből, megkímélhetjük a HAProxy-t a csomópontok állapotának ellenőrzésétől, és ezt a logikát a Consulra hagyhatjuk.
A választható parancs argumentummal a Consul Template automatikusan elindíthatja a HAProxy újratöltését, amikor a sablon frissül. Ahogy a csomópontok dinamikusan hozzáadódnak és eltávolításra kerülnek a Consulból, a terheléselosztó azonnal értesül a változásról, így minden eddiginél könnyebben minimalizálhatja az állásidőt.
“Varnish szerverek
A Varnish egy hatékony gyorsítótárazási szerver, amely támogatja több háttértár lekérdezését, ahonnan adatokat és proxy-kéréseket lehet gyorsítótárazni. Egy tipikus Varnish konfigurációs fájl így nézhet ki:
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(); }
A HAProxy példánkhoz hasonlóan a Consul Template triviálissá teszi a Varnish backendek dinamikus feltöltését és kezelését:
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();}
“Alkalmazáskonfigurációk
Az intuitív, mégis hatékony kulcs-érték tároló lehetővé teszi az alkalmazásfejlesztők és üzemeltetők számára, hogy globális konfigurációs információkat tároljanak a Consulban. A Consul sablon dinamikusan frissül, ha ezen értékek valamelyikében változás történik. A mai konfigurációkezelési gyakorlatban gyakori, hogy egy alkalmazásnak van egy konfigurációs sablonja, amely megváltoztatja az alkalmazás néhány hangolható értékét:
MaxWorkers 5 JobsPerSecond 11
Az alkalmazás konfigurációja még egy dinamikus konfigurációkezelő rendszer használatával is változatlan marad a következő futtatásig. A Consul Template segítségével a kulcsérték-tárolóban bekövetkező bármilyen változás azonnal átterjed az összes, az adott értékre figyelő sablonra. Mostantól a konfigurációkezelő szoftvere írhat egy Consul Sablon:
MaxWorkers {{key "web/max-workers"}}JobsPerSecond {{key "web/jobs-per-second"}}
Ez a sablon mostantól kapcsolatban áll a Consul-lal, és azonnali, dinamikus frissítéseket kap, amint egy változás a Consulba kerül. Többé nem kell egy órát várnia a CM-rendszerének következő iterációjára.
“Jellemzők
A Consul Template tele van nagyszerű funkciókkal, de nem tudjuk felsorolni mindet! Íme csak néhány a sok funkció közül, amelyet a Consul Template-ben talál:
-
Quiescence – A Consul Template beépített quiescence funkcióval érkezik, és képes intelligensen várni a Consul példány változásaira. Ez a kritikus fontosságú funkció megakadályozza a sablon gyakori frissítését, miközben a rendszer ingadozik.
-
Száraz üzemmód – Nem biztos az infrastruktúra aktuális állapotában? Attól tart, hogy egy sablonváltás tönkretehet egy alrendszert? Ne féljen többé, mert a Consul Template teljes mértékben rendelkezik
-dry
üzemmóddal. Száraz módban a Consul Template az eredményt az STDOUT-ra rendereli, így az operátor megvizsgálhatja a kimenetet, és eldöntheti, hogy a sablon módosítása biztonságos-e. -
CLI és konfiguráció – Jobban szeret mindent a parancssoron megadni? Vagy konfigurációkezelő eszközt használ, és a lemezre írt konfigurációkat részesíti előnyben? Bármi is legyen az Ön preferenciája, a Consul Template gondoskodik Önről! A HCL beépített támogatásával a Consul Template elfogad konfigurációs fájlt, parancssori zászlókat vagy a kettő keverékét! Így továbbra is használhatja meglévő konfigurációkezelő eszközeit a Consul Template-tel együtt.
-
Verbose Debugging – Még ha azt hiszi is, hogy minden tökéletes, néha a rendszerek meghibásodnak. Ezekre a kritikus esetekre a Consul Template részletes naplózási rendszerrel rendelkezik, amellyel szinte bármilyen probléma nyomon követhető.
Leave a Reply