Introducendo Consul Template

Oggi stiamo rilasciando Consul Template, un’applicazione standalone che è piena di nuove sorprendenti caratteristiche.

Consul Template interroga un’istanza di Consul e aggiorna qualsiasi numero di template specificato sul filesystem. Come bonus aggiuntivo, Consul Template può eseguire comandi arbitrari quando l’aggiornamento di un template viene completato.

“Demo

“Casi d’uso

Consul Template può interrogare voci di servizio, chiavi e valori chiave in Consul. La potente astrazione e il linguaggio di interrogazione dei template rendono Consul Template perfetto per creare configurazioni dinamiche come:

“Apache/Nginx Proxy Balancer

Non è raro avere più server di applicazioni in proxy dietro una singola istanza proxy rivolta al pubblico. Questa configurazione di solito assomiglia a qualcosa come:

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

Ma aggiungere e rimuovere un nodo dal bilanciatore di carico è spesso un processo doloroso, lungo e noioso. Ancora peggio, quando un nodo di frontend diventa “non sano”, un operatore deve rimuoverlo manualmente dal bilanciatore di carico. Consul Template rende l’intero processo banale:

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

Ecco un esempio simile per una configurazione Nginx:

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

Come i nodi vengono aggiunti e rimossi da Consul, vengono automaticamente aggiunti e rimossi dalla configurazione del bilanciatore di carico. Poiché il metodo service di Consul Template interroga solo i nodi sani, anche i nodi non sani vengono rimossi dal bilanciatore di carico non appena vengono segnalati come down. Questo riduce al minimo sia il tempo di inattività che l’intervento dell’operatore, così puoi concentrarti su ciò che è importante!

“HAProxy Backends

HAProxy è un software di bilanciamento del carico molto comune e ad alte prestazioni. Un tipico file di configurazione di HAProxy assomiglia a:

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

Tuttavia, proprio come il proxy balancer Apache/Nginx, aggiungere e rimuovere nodi da HAProxy è un’esperienza dolorosa e spesso spaventosa. Consul Template toglie la paura da HAProxy:

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

Si può notare che l’attributo check è stato rimosso. Poiché i nostri controlli di salute sono definiti in Consul, e Consul Template restituisce solo nodi sani da una query di servizio, possiamo risparmiare a HAProxy il lavoro di controllare la salute dei nodi e lasciare questa logica a Consul.

Con l’argomento di comando opzionale, Consul Template può innescare automaticamente un ricaricamento di HAProxy quando il template viene aggiornato. Quando i nodi vengono aggiunti e rimossi dinamicamente da Consul, il tuo bilanciatore di carico sarà immediatamente informato del cambiamento, rendendo più facile che mai minimizzare i tempi di inattività.

“Varnish Servers

Varnish è un potente server di caching che supporta l’interrogazione di più backend da cui mettere in cache dati e richieste proxy. Un tipico file di configurazione di Varnish potrebbe assomigliare a:

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

Proprio come il nostro esempio HAProxy, Consul Template rende banale popolare e gestire dinamicamente i backend di 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();}

“Configurazioni di applicazioni

L’intuitivo ma potente negozio di valori chiave permette agli sviluppatori di applicazioni e agli operatori di memorizzare informazioni di configurazione globale in Consul. Consul Template si aggiornerà dinamicamente quando si verifica una modifica a uno di questi valori. Con le pratiche odierne di gestione della configurazione, è comune avere un modello di configurazione per un’applicazione che altera alcuni valori sintonizzabili per l’applicazione:

MaxWorkers 5 JobsPerSecond 11

Anche usando un sistema di gestione dinamica della configurazione, la configurazione dell’applicazione rimarrà invariata fino alla prossima esecuzione. Con Consul Template, qualsiasi cambiamento nel negozio di valori chiave viene immediatamente propagato a tutti i template che ascoltano quel valore. Ora, il tuo software di gestione della configurazione può scrivere un Consul Template:

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

Questo template è ora connesso con Consul e riceverà aggiornamenti istantanei e dinamici non appena un cambiamento viene inviato a Consul. Non c’è più bisogno di aspettare un’ora per la prossima iterazione del tuo sistema CM da eseguire.

“Caratteristiche

Consul Template è pieno zeppo di grandi caratteristiche, ma non è possibile elencarle tutte! Qui ci sono solo alcune delle molte caratteristiche che troverai in Consul Template:

  • Quiescenza – Consul Template è dotato di quiescenza integrata e può attendere in modo intelligente i cambiamenti di un’istanza Consul. Questa caratteristica critica impedisce frequenti aggiornamenti di un template mentre un sistema è fluttuante.

  • Modalità secca – Non sei sicuro dello stato attuale della tua infrastruttura? Hai paura che un cambio di template possa rompere un sottosistema? Non temere più perché Consul Template è completo di modalità -dry. In modalità dry, Consul Template renderà il risultato su STDOUT, così un operatore può ispezionare l’output e decidere se il cambiamento del template è sicuro.

  • CLI e Config – Preferisci specificare tutto sulla linea di comando? O stai usando uno strumento di gestione della configurazione e preferisci le configurazioni scritte su disco? Qualunque sia la tua preferenza, Consul Template ti ha coperto! Con il supporto integrato per HCL, Consul Template accetta un file di configurazione, i flag della linea di comando, o un mix di entrambi! In questo modo, è possibile continuare a utilizzare i vostri strumenti di gestione della configurazione esistenti in tandem con Consul Template.

  • Verbose Debugging – Anche quando si pensa che sia perfetto, a volte i sistemi falliscono. Per quei momenti critici, Consul Template ha un sistema di log dettagliato che può essere usato per rintracciare quasi ogni problema.

“Conclusione

Leave a Reply