Consul - Bootstrapping et DNS

Dans ce chapitre, nous verrons comment les composants suivants sont utilisés dans Consul.

  • Bootstrap automatique
  • Bootstrap manuel
  • Utilisation du transfert DNS
  • Mise en cache DNS

Examinons maintenant chacun de ces éléments en détail.

Bootstrapping automatique

Le bootstrapping est l'une des fonctionnalités principales de Consul. Lorsque vous installez consul pour la première fois, il est automatiquement configuré pour détecter, identifier et rejoindre les nœuds rencontrés. Lors de sa formation de cluster, l'amorçage automatique est une fonctionnalité intégrée de Consul. Pour obtenir plus d'informations sur consul, le meilleur moyen est d'utiliser la commande ci-dessous -

$ sudo consul info

La sortie serait comme indiqué dans la capture d'écran suivante.

Cette commande montrera le fonctionnement réel du consul en real working scenarios. Il affichera l'algorithme de radeau fonctionnant dans Consul. La commande d'amorçage automatique peut être affichée à l'aide de la commande suivante -

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

Automatic bootstrapping cannot be done in -dev mode.

Cette option informe Consul du nombre attendu de nœuds de serveur et démarre automatiquement lorsque les serveurs sont disponibles.

Bootstrapping manuel

L'amorçage manuel est une fonctionnalité ancienne et utile de Consul. En fait, dans la version précédente de Consul, le bootstrap doit être fait manuellement lors de l'installation et de l'utilisation de consul pour la première fois. Plus tard, on s'est rendu compte qu'il n'était pas possible d'effectuer cette opération de ligne de commande à des moments différents. Par conséquent, l'amorçage automatique a été introduit. Vous pouvez toujours utiliser l'amorçage manuellement à l'aide des commandes suivantes.

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

Il existe deux options pour effectuer un bootstrap manuel

  • Exécution de commandes sur 2 nœuds: sur le nœud B et le nœud C, vous pouvez effectuer les opérations suivantes -

$ consul join <Node A Address>
  • Exécution de la commande sur 1 nœud -

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

Utilisation du transfert DNS

Le DNS est servi depuis port 53. Le transfert DNS peut être effectué en utilisantBIND, dnsmasq et iptables. Par défaut, l'agent Consul exécute un serveur DNS à l'écoute sur le port 8600. En soumettant des requêtes DNS au serveur DNS de l'agent Consul, vous pouvez obtenir l'adresse IP d'un nœud exécutant le service qui vous intéresse.

L'interface DNS Consul rend les informations de port d'un service disponibles via le SRV records. Sans ajouter manuellement de logique dans votre code, vous êtes généralement limité uniquement aux informations d'adresse IP (c'est-à-dire à un enregistrement) du service que vous interrogez.

La meilleure option est d'avoir plusieurs serveurs BIND exécutant chacun un agent Consul localement. Toutes les requêtes reçues par un serveur BIND seraient transmises au serveur DNS de son agent Consul local.

Utilisation de Bind

Nous pouvons utiliser le transfert DNS en utilisant la fonction Bind. Cela peut être fait en utilisant la commande suivante.

$ sudo apt-get install bind9 bind9utils bind9-doc

La sortie serait comme indiqué dans la capture d'écran suivante.

Éditons le fichier /etc/bind/named.conf avec la commande suivante.

$ sudo vim /etc/bind/named.conf

Dans le fichier, veuillez ajouter les lignes suivantes sous la dernière ligne du code.

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";

La sortie serait comme indiqué dans la capture d'écran suivante.

Vous pouvez utiliser la commande Bind suivante pour configurer Consul.

$ sudo vim /etc/bind/consul.conf

Ajoutez les lignes suivantes lorsque vous créez le fichier -

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

Vous pouvez maintenant lancer votre agent consul en utilisant la commande suivante. (N'oubliez pas de redémarrer également le service bind9.)

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

Le système doit être configuré pour envoyer des requêtes au serveur DNS de l'agent Consul local. Cela se fait en mettant à jour leresolv.confsur le système pour pointer vers 127.0.0.1. Dans la plupart des cas, Consul devra être configuré pour fonctionner sur le port 53.

Vous pouvez ajouter les informations suivantes au fichier /etc/resolv.conf:

nameserver 127.0.0.1

Mise en cache DNS

Consul sert tous les résultats DNS avec une valeur «0 TTL» (Time to Live). Cela empêche toute mise en cache. Cependant, en raison des valeurs TTL, il peut être défini pour permettre la mise en cache des résultats DNS en aval de Consul. Des valeurs TTL plus élevées réduisent le nombre de recherches sur les serveurs Consul et accélèrent les recherches pour les clients, au prix de résultats de plus en plus obsolètes.

À cette fin, nous allons utiliser la mise en cache DNS en utilisant la méthode ci-dessous -

$ sudo apt-get install dnsmasq

La sortie serait comme indiqué dans la capture d'écran suivante.

Maintenant, nous pouvons faire une configuration très simple -

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

Tout ce que nous faisons ici est de spécifier que les demandes DNS pour les services de consul, qui doivent être traitées par le serveur DNS à 127.0.0.1 sur le port 8600. À moins que vous ne modifiiez les valeurs par défaut du consul, cela devrait fonctionner.

Dans des cas normaux, la commande suivante doit être utilisée.

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

Avec Dnsmasq, vous devez utiliser la commande suivante.

$ dig web.service.consul

La sortie serait comme indiqué dans la capture d'écran suivante.