Cónsul - Bootstrapping y DNS

En este capítulo, discutiremos cómo se utilizan los siguientes componentes en Consul.

  • Bootstrapping automático
  • Bootstrapping manual
  • Usar el reenvío de DNS
  • Almacenamiento en caché de DNS

Analicemos ahora cada uno de estos en detalle.

Bootstrapping automático

Bootstrapping es una de las características principales de Consul. Cuando instalas consul por primera vez, se configura automáticamente para detectar, identificar y unir los nodos que encuentra. Durante la formación de su grupo, el arranque automático es una función incorporada de Consul. Para obtener más información sobre el cónsul, la mejor manera es usar el siguiente comando:

$ sudo consul info

La salida sería como se muestra en la siguiente captura de pantalla.

Este comando mostrará el funcionamiento real del cónsul en real working scenarios. Mostrará el algoritmo de balsa funcionando en Consul. El comando de arranque automático se puede mostrar usando el siguiente comando:

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

Automatic bootstrapping cannot be done in -dev mode.

Esta opción informa a Consul del número esperado de nodos de servidor y se inicia automáticamente cuando los servidores están disponibles.

Bootstrapping manual

Bootstrapping manual es una característica antigua y útil de Consul. En realidad, durante la versión anterior de Consul, el arranque debe realizarse manualmente al instalar y usar Consul por primera vez. Más tarde, se dio cuenta de que no era posible realizar esta operación de línea de comandos en diferentes momentos. Por lo tanto, se introdujo el bootstrapping automático. Siempre puede usar bootstrapping manualmente usando los siguientes comandos.

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

Hay dos opciones para realizar el arranque manual

  • Ejecución de comandos en 2 nodos: en el nodo B y el nodo C, puede hacer lo siguiente:

$ consul join <Node A Address>
  • Ejecutando comando sobre 1 nodo -

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

Usar el reenvío de DNS

DNS se sirve desde port 53. El reenvío de DNS se puede hacer usandoBIND, dnsmasq y iptables. De forma predeterminada, el agente Consul ejecuta un servidor DNS que escucha en el puerto 8600. Al enviar solicitudes de DNS al servidor DNS del agente Consul, puede obtener la dirección IP de un nodo que ejecuta el servicio en el que está interesado.

La interfaz de Consul DNS hace que la información del puerto para un servicio esté disponible a través del SRV records. Sin agregar lógica manualmente en su código, generalmente está limitado solo a la información de la dirección IP (es decir, un registro) del servicio que está consultando.

La mejor opción es tener varios servidores BIND, cada uno ejecutando un agente Consul localmente. Cualquier consulta recibida por un servidor BIND se reenviará a su servidor DNS del Agente Consul local.

Usando Bind

Podemos usar el reenvío de DNS usando la función Bind. Se puede hacer usando el siguiente comando.

$ sudo apt-get install bind9 bind9utils bind9-doc

La salida sería como se muestra en la siguiente captura de pantalla.

Editemos el archivo /etc/bind/named.conf con el siguiente comando.

$ sudo vim /etc/bind/named.conf

En el archivo, agregue las siguientes líneas debajo de la última línea del código.

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 salida sería como se muestra en la siguiente captura de pantalla.

Puede tomar el siguiente comando Bind para configurar Consul.

$ sudo vim /etc/bind/consul.conf

Agregue las siguientes líneas cuando cree el archivo:

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

Ahora puede comenzar a ejecutar su agente de cónsul usando el siguiente comando. (Recuerde reiniciar también el servicio bind9).

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

El sistema debe configurarse para enviar consultas al servidor DNS del agente Consul local. Esto se hace actualizando elresolv.confarchivo en el sistema para apuntar a 127.0.0.1. En la mayoría de los casos, Consul deberá configurarse para ejecutarse en el puerto 53.

Puede agregar la siguiente información a /etc/resolv.conf:

nameserver 127.0.0.1

Almacenamiento en caché de DNS

Consul proporciona todos los resultados de DNS con un valor de '0 TTL' (tiempo de vida). Esto evita cualquier almacenamiento en caché. Sin embargo, debido a los valores de TTL, se puede configurar para permitir que los resultados de DNS se almacenen en caché con el flujo descendente de Consul. Los valores TTL más altos reducen el número de búsquedas en los servidores de Consul y aceleran las búsquedas para los clientes, a costa de resultados cada vez más obsoletos.

Para este propósito, utilizaremos el almacenamiento en caché de DNS utilizando el método a continuación:

$ sudo apt-get install dnsmasq

La salida sería como se muestra en la siguiente captura de pantalla.

Ahora, podemos hacer una configuración muy simple:

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

Todo lo que estamos haciendo aquí es especificar que las solicitudes de DNS para los servicios de cónsul, que deben ser tratadas por el servidor DNS en 127.0.0.1 en el puerto 8600. A menos que cambie los valores predeterminados del cónsul, esto debería funcionar.

En casos normales, se debe utilizar el siguiente comando.

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

Con Dnsmasq, debe usar el siguiente comando.

$ dig web.service.consul

La salida sería como se muestra en la siguiente captura de pantalla.