Console - Bootstrap e DNS

In questo capitolo, discuteremo di come vengono utilizzati i seguenti componenti in Console.

  • Bootstrap automatico
  • Bootstrap manuale
  • Utilizzo dell'inoltro DNS
  • Caching DNS

Discutiamo ora ciascuno di questi in dettaglio.

Avvio automatico

Il bootstrap è una delle caratteristiche principali di Consul. Quando installi console per la prima volta, viene automaticamente configurato per rilevare, identificare e unire i nodi che incontra. Durante la formazione del cluster, il bootstrap automatico è una funzionalità incorporata di Consul. Per ottenere maggiori informazioni su console, il modo migliore è utilizzare il comando seguente:

$ sudo consul info

L'output sarebbe come mostrato nello screenshot seguente.

Questo comando mostrerà l'effettivo funzionamento del console in real working scenarios. Mostrerà l'algoritmo Raft funzionante in Console. Il comando di avvio automatico può essere visualizzato utilizzando il seguente comando:

$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3

Automatic bootstrapping cannot be done in -dev mode.

Questa opzione informa il Console del numero previsto di nodi del server e si avvia automaticamente quando i server sono disponibili.

Avvio manuale

Il bootstrap manuale è una vecchia e utile funzionalità di Consul. In realtà, durante la versione precedente di Consul, il bootstrap deve essere eseguito manualmente durante l'installazione e l'utilizzo di console per la prima volta. Successivamente, ci si rese conto che non era possibile eseguire questa operazione da riga di comando in momenti diversi. Quindi, è stato introdotto il bootstrap automatico. È sempre possibile utilizzare il bootstrap manualmente utilizzando i seguenti comandi.

In this case, we will assume that a 3-node consul cluster is to be built.

Sono disponibili due opzioni per eseguire il bootstrap manuale

  • Esecuzione di comandi su 2 nodi: sul nodo B e sul nodo C è possibile eseguire le seguenti operazioni:

$ consul join <Node A Address>
  • Comando in esecuzione su 1 nodo -

$ consul join <Node B Address> <Node C Address>

Utilizzo dell'inoltro DNS

Il DNS è servito da port 53. L'inoltro DNS può essere eseguito utilizzandoBIND, dnsmasq e iptables. Per impostazione predefinita, il Consul agent esegue un server DNS in ascolto sulla porta 8600. Inviando le richieste DNS al server DNS del Consul agent, puoi ottenere l'indirizzo IP di un nodo che esegue il servizio a cui sei interessato.

L'interfaccia DNS di Consul rende disponibili le informazioni sulla porta per un servizio tramite SRV records. Senza aggiungere manualmente la logica nel codice, in genere si è limitati solo alle informazioni sull'indirizzo IP (ovvero un record) del servizio che si sta richiedendo.

L'opzione migliore è disporre di più server BIND, ciascuno con un agente Consul in locale. Qualsiasi richiesta ricevuta da un server BIND verrà inoltrata al server DNS di Consul Agent locale.

Utilizzando Bind

Possiamo usare il DNS Forwarding usando la funzione Bind. Può essere fatto utilizzando il seguente comando.

$ sudo apt-get install bind9 bind9utils bind9-doc

L'output sarebbe come mostrato nello screenshot seguente.

Modifichiamo il file /etc/bind/named.conf con il seguente comando.

$ sudo vim /etc/bind/named.conf

Nel file, aggiungi le seguenti righe sotto l'ultima riga del codice.

options {
   directory "/var/cache/bind";
   recursion yes;
   allow-query { localhost; };
   
   forwarders {
      8.8.8.8;
      8.8.4.4;
   };
   dnssec-enable no;
   dnssec-validation no;
   auth-nxdomain no; # conform to RFC1035
   listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";

L'output sarebbe come mostrato nello screenshot seguente.

Puoi prendere il seguente comando Bind per configurare Consul.

$ sudo vim /etc/bind/consul.conf

Aggiungi le seguenti righe quando crei il file:

zone "consul" IN {
   type forward;
   forward only;
   forwarders { 127.0.0.1 port 8600; };
};

Ora puoi iniziare a eseguire il tuo consulente utilizzando il seguente comando. (Ricordarsi di riavviare anche il servizio bind9.)

$ sudo service bind9 restart
$ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]

Il sistema deve essere configurato per inviare query al server DNS dell'agente Consul locale. Questo viene fatto aggiornando ilresolv.conffile sul sistema in modo che punti a 127.0.0.1. Nella maggior parte dei casi, Console dovrà essere configurato per funzionare sulla porta 53.

È possibile aggiungere le seguenti informazioni a /etc/resolv.conf:

nameserver 127.0.0.1

Caching DNS

Consul fornisce tutti i risultati DNS con un valore "0 TTL" (Time to Live). Ciò impedisce qualsiasi memorizzazione nella cache. Tuttavia, a causa dei valori TTL, può essere impostato per consentire la memorizzazione nella cache dei risultati DNS con il downstream di Consul. Valori TTL più elevati riducono il numero di ricerche sui server Consul e velocizzano le ricerche per i client, a scapito di risultati sempre più obsoleti.

A tale scopo, utilizzeremo la cache DNS utilizzando il metodo seguente:

$ sudo apt-get install dnsmasq

L'output sarebbe come mostrato nello screenshot seguente.

Ora possiamo eseguire una configurazione molto semplice:

$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

Tutto ciò che stiamo facendo qui è specificare che le richieste DNS per i servizi di console, che devono essere gestite dal server DNS su 127.0.0.1 sulla porta 8600. A meno che non si modifichino le impostazioni predefinite della console, dovrebbe funzionare.

In casi normali, dovrebbe essere usato il seguente comando.

$ dig @127.0.0.1 -p 8600 web.service.consul

Con Dnsmasq, dovresti usare il seguente comando.

$ dig web.service.consul

L'output sarebbe come mostrato nello screenshot seguente.