Przedstawiamy Consul Template

Dzisiaj udostępniamy Consul Template, samodzielną aplikację, która jest pełna niesamowitych nowych funkcji.

Consul Template odpytuje instancję Consula i aktualizuje dowolną liczbę określonych szablonów w systemie plików. Jako dodatkowy bonus, Consul Template może wykonywać dowolne polecenia po zakończeniu aktualizacji szablonu.

„Demo

„Przypadki użycia

Consul Template może odpytywać wpisy usług, klucze i wartości kluczy w Consul. Potężna abstrakcja i język zapytań szablonów sprawiają, że Consul Template jest idealny do tworzenia dynamicznych konfiguracji, takich jak:

„Apache/Nginx Proxy Balancers

Nierzadko zdarza się, że wiele serwerów aplikacji jest prokserowanych za pojedynczą, publiczną instancją proxy. Taka konfiguracja zazwyczaj wygląda mniej więcej tak:

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

Ale dodawanie i usuwanie węzła z load balancera jest często bolesnym, czasochłonnym i żmudnym procesem. Co gorsza, gdy węzeł frontendowy staje się „niezdrowy”, operator musi ręcznie usunąć go z load balancera. Szablon Consul sprawia, że cały ten proces jest banalnie prosty:

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

Oto podobny przykład dla konfiguracji Nginx:

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

Gdy węzły są dodawane i usuwane z Consula, są automatycznie dodawane i usuwane z konfiguracji load balancera. Ponieważ metoda service szablonu Consul odpytuje tylko zdrowe węzły, niezdrowe węzły są również usuwane z load balancera, gdy tylko zostaną zgłoszone jako uszkodzone. Minimalizuje to zarówno czas przestoju, jak i interwencję operatora, dzięki czemu możesz skupić się na tym, co ważne!

„HAProxy Backends

HAProxy to bardzo powszechne, wysokowydajne oprogramowanie do równoważenia obciążenia. Typowy plik konfiguracyjny HAProxy wygląda tak:

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

Jednakże, podobnie jak w przypadku balansera proxy Apache/Nginx, dodawanie i usuwanie węzłów z HAProxy jest bolesnym i często przerażającym doświadczeniem. Szablon Consul usuwa strach z HAProxy:

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

Możesz zauważyć, że atrybut check został usunięty. Ponieważ nasze kontrole stanu są zdefiniowane w Consulu, a Szablon Consul zwraca tylko zdrowe węzły z zapytania o usługę, możemy oszczędzić HAProxy pracy związanej ze sprawdzaniem stanu węzłów i pozostawić tę logikę Consulowi.

Z opcjonalnym argumentem polecenia Szablon Consul może automatycznie wywołać przeładowanie HAProxy, gdy szablon jest aktualizowany. Ponieważ węzły są dynamicznie dodawane i usuwane z Consul, twój load balancer zostanie natychmiast poinformowany o zmianie, dzięki czemu zminimalizowanie przestojów będzie łatwiejsze niż kiedykolwiek.

„Serwery Varnish

Varnish jest potężnym serwerem buforującym, który obsługuje zapytania do wielu backendów, z których buforowane są dane i żądania proxy. Typowy plik konfiguracyjny Varnisha może wyglądać następująco:

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

Tak jak w naszym przykładzie HAProxy, szablon Consul sprawia, że dynamiczne wypełnianie i zarządzanie backendami Varnisha jest banalnie proste:

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

„Konfiguracje aplikacji

Intuicyjny, ale potężny magazyn kluczy-wartości pozwala twórcom aplikacji i operatorom przechowywać w Consulu informacje o globalnej konfiguracji. Szablon Consul będzie dynamicznie aktualizowany, gdy nastąpi zmiana jednej z tych wartości. Przy dzisiejszych praktykach zarządzania konfiguracją powszechne jest posiadanie szablonu konfiguracji aplikacji, który zmienia pewne przestrajalne wartości dla aplikacji:

MaxWorkers 5 JobsPerSecond 11

Nawet używając dynamicznego systemu zarządzania konfiguracją, konfiguracja aplikacji pozostanie niezmieniona do następnego uruchomienia. Dzięki Consul Template, każda zmiana w magazynie wartości kluczowych jest natychmiast propagowana do wszystkich szablonów nasłuchujących tej wartości. Teraz Twoje oprogramowanie do zarządzania konfiguracją może napisać Szablon Consul:

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

Ten szablon jest teraz połączony z Consul i będzie otrzymywał natychmiastowe, dynamiczne aktualizacje, gdy tylko zmiana zostanie przepchnięta do Consul. Nie musisz już czekać godzinę na uruchomienie kolejnej iteracji systemu CM.

„Features

Consul Template jest pełen wspaniałych funkcji, ale nie możemy wymienić ich wszystkich! Oto tylko kilka z wielu cech, które znajdziesz w Szablonie Consul:

  • Cichość – Szablon Consul ma wbudowaną cichość i może inteligentnie czekać na zmiany w instancji Consula. Ta krytyczna funkcja zapobiega częstym aktualizacjom szablonu podczas wahań systemu.

  • Tryb suchy – Nie masz pewności co do aktualnego stanu infrastruktury? Obawiasz się, że zmiana szablonu może uszkodzić podsystem? Nie obawiaj się więcej, ponieważ Szablon Consul jest wyposażony w tryb -dry. W trybie suchym szablon Consul Template wyrzuca wynik do STDOUT, więc operator może sprawdzić wyjście i zdecydować, czy zmiana szablonu jest bezpieczna.

  • CLI i Config – Wolisz określać wszystko w linii poleceń? A może używasz narzędzia do zarządzania konfiguracją i wolisz konfiguracje zapisywane na dysku? Niezależnie od preferencji, Szablon Consul ma wszystko pod kontrolą! Dzięki wbudowanemu wsparciu dla HCL, szablon Consul Template akceptuje plik konfiguracyjny, flagi wiersza poleceń lub mieszankę obu! W ten sposób możesz nadal używać swoich istniejących narzędzi do zarządzania konfiguracją w połączeniu z szablonem Consul.

  • Debugowanie Verbose – Nawet gdy myślisz, że jest idealnie, czasem systemy zawodzą. Na te krytyczne czasy Consul Template ma szczegółowy system logowania, który może być użyty do śledzenia niemal każdego problemu.

„Wnioski

.

Leave a Reply