Esittelyssä Consul Template

Tänään julkaisemme Consul Templaten, itsenäisen sovelluksen, joka on täynnä uskomattomia uusia ominaisuuksia.

Consul Template kysyy Consul-instanssia ja päivittää minkä tahansa määrän määritettyjä malleja tiedostojärjestelmässä. Lisäbonuksena Consul Template voi suorittaa mielivaltaisia komentoja, kun mallin päivitys on valmis.

”Demo

”Käyttötapaukset

Consul Template voi kysyä palvelumerkintöjä, avaimia ja avainarvoja Consulissa. Tehokas abstraktio ja template-kyselykieli tekevät Consul Template -ohjelmasta täydellisen dynaamisten määritysten luomiseen, kuten:

”Apache/Nginx Proxy Balancers

Ei ole harvinaista, että useat sovelluspalvelimet ovat välityspalvelininstansseja yhden julkisen proxy-instanssin takana. Tämä kokoonpano näyttää yleensä jotakuinkin seuraavalta:

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

Mutta solmun lisääminen ja poistaminen kuormantasaajasta on usein tuskallinen, aikaa vievä ja työläs prosessi. Vielä pahempaa on, että kun frontend-solmusta tulee ”epäterve”, operaattorin on poistettava se manuaalisesti kuormantasaajasta. Consul Template tekee tästä koko prosessista triviaalin:

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

Tässä on samanlainen esimerkki Nginx-konfiguraatiolle:

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

Kun solmuja lisätään ja poistetaan Consulissa, ne lisätään ja poistetaan automaattisesti kuormantasaajan konfiguraatiosta. Koska Consulin mallin service-metodi kysyy vain terveiltä solmuilta, myös epäterveet solmut poistetaan kuormantasaajasta heti, kun ne ilmoitetaan alasajetuiksi. Tämä minimoi sekä seisokkiajan että operaattorin puuttumisen, joten voit keskittyä olennaiseen!”

”HAProxy Backends

HAProxy on hyvin yleinen, suorituskykyinen kuormanjako-ohjelmisto. Tyypillinen HAProxyn konfigurointitiedosto näyttää seuraavalta:

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

Aivan kuten Apache/Nginx-välityspalveluntasaaja, solmujen lisääminen ja poistaminen HAProxysta on kuitenkin tuskallinen ja usein pelottava kokemus. Consul Template vie pelon pois HAProxysta:

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

Olet ehkä huomannut, että check-attribuutti on poistettu. Koska terveystarkistuksemme on määritelty Consulissa ja Consul Template palauttaa vain terveitä solmuja palvelukyselystä, voimme säästää HAProxylta työn solmujen terveyden tarkistamisesta ja jättää tämän logiikan Consulille.

Vapaaehtoisen komentoargumentin avulla Consul Template voi automaattisesti käynnistää HAProxyn lataamisen uudelleen, kun mallia päivitetään. Kun solmuja lisätään ja poistetaan dynaamisesti Consulista, kuormantasaajasi saa välittömästi tiedon muutoksesta, mikä tekee seisokkiaikojen minimoimisesta entistä helpompaa.”

”Varnish-palvelimet

Varnish on tehokas välimuistipalvelin, joka tukee useiden backendien kyselyä, joista voidaan välimuistiin tallentaa tietoja ja välityspyyntöjä. Tyypillinen Varnishin konfiguraatiotiedosto voi näyttää seuraavalta:

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

Aivan kuten HAProxy-esimerkkimme, Consul Template tekee Varnishin backendien dynaamisen täyttämisen ja hallinnan triviaaliksi.”

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

”Sovelluskonfiguraatiot

Intuitiivisen, mutta tehokkaan avainarvosäilön avulla sovelluskehittäjät ja -operaattorit pystyvät tallentamaan globaalia konfigurointitietoa Consuliin. Consul Template päivittyy dynaamisesti, kun jokin näistä arvoista muuttuu. Nykyisissä konfiguraationhallintakäytännöissä on tavallista, että sovelluksella on konfiguraatiomalli, joka muuttaa joitakin sovelluksen viritettäviä arvoja:

MaxWorkers 5 JobsPerSecond 11

Jopa dynaamisen konfiguraationhallintajärjestelmän avulla sovelluksen konfiguraatio pysyy muuttumattomana seuraavaan ajoon asti. Consul Template -ohjelmalla kaikki avainarvosäilön muutokset leviävät välittömästi kaikkiin kyseistä arvoa kuunteleviin malleihin. Nyt konfiguraationhallintaohjelmistosi voi kirjoittaa Consul Template:

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

Tämä malli on nyt yhteydessä Consuliin ja saa välittömiä, dynaamisia päivityksiä heti, kun muutos siirretään Consuliin. Sinun ei enää tarvitse odottaa tuntia CM-järjestelmäsi seuraavaa iteraatiota.”

”Ominaisuudet

Consul Template on täynnä hienoja ominaisuuksia, mutta emme voi mitenkään luetella niitä kaikkia! Tässä on vain muutama monista ominaisuuksista, jotka löydät Consul Template -ohjelmasta:

  • Quiescence – Consul Template toimitetaan sisäänrakennetulla quiescence-ominaisuudella, ja se voi älykkäästi odottaa muutoksia Consul-instanssista. Tämä kriittinen ominaisuus estää usein toistuvat päivitykset malliin järjestelmän vaihdellessa.

  • Dry Mode – Oletko epävarma infrastruktuurisi nykytilasta? Pelkäätkö, että mallin muutos rikkoo jonkin osajärjestelmän? Älä pelkää enää, sillä Consul Template on varustettu -dry-tilalla. Kuivassa tilassa Consul Template renderöi tuloksen STDOUT:iin, joten käyttäjä voi tarkastaa tulosteen ja päättää, onko mallimuutos turvallinen.

  • CLI ja konfig – Haluatko määrittää kaiken mieluummin komentorivillä? Vai käytätkö konfiguraationhallintatyökalua ja haluat konfiguraatiot mieluummin kirjoitettuna levylle? Olivatpa mieltymyksesi mitkä tahansa, Consul Template kattaa sinut! Sisäänrakennetun HCL-tuen ansiosta Consul Template hyväksyy konfiguraatiotiedoston, komentorivin liput tai molempien yhdistelmän! Näin voit jatkaa nykyisten konfiguraationhallintatyökalujesi käyttöä yhdessä Consul Templaten kanssa.

  • Verbose Debugging – Vaikka kaikki olisi mielestäsi täydellistä, joskus järjestelmät epäonnistuvat. Näitä kriittisiä hetkiä varten Consul Template -ohjelmassa on yksityiskohtainen lokijärjestelmä, jonka avulla voidaan jäljittää lähes mikä tahansa ongelma.

”Johtopäätös

Leave a Reply