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ő.

“Következtetés

Leave a Reply