Consul - Bootstrapping e DNS

Neste capítulo, discutiremos como os seguintes componentes são usados ​​no Consul.

  • Bootstraping automático
  • Inicialização manual
  • Usando o encaminhamento de DNS
  • Cache DNS

Vamos agora discutir cada um deles em detalhes.

Bootstraping automático

Bootstrapping é um dos principais recursos do Consul. Quando você instala o consul pela primeira vez, ele é configurado automaticamente para detectar, identificar e unir os nós que encontrar. Durante a formação do cluster, a inicialização automática é um recurso integrado do Consul. Para obter mais informações sobre o cônsul, a melhor forma é utilizar o comando abaixo -

$ sudo consul info

A saída seria conforme mostrado na captura de tela a seguir.

Este comando irá mostrar o funcionamento real do cônsul em real working scenarios. Ele exibirá o Algoritmo de Balsa funcionando no Consul. O comando de inicialização automática pode ser mostrado usando o seguinte comando -

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

Automatic bootstrapping cannot be done in -dev mode.

Esta opção informa ao Consul sobre o número esperado de nós de servidor e inicializa automaticamente quando os servidores estão disponíveis.

Inicialização manual

A inicialização manual é um recurso antigo e útil do Consul. Na verdade, durante a versão anterior do Consul, o bootstrapping deve ser feito manualmente ao instalar e usar o Consul pela primeira vez. Posteriormente, percebeu-se que não era possível realizar essa operação de linha de comando em momentos diferentes. Portanto, a inicialização automática foi introduzida. Você sempre pode usar o bootstrapping manualmente usando os comandos a seguir.

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

Existem duas opções para fazer bootstrap manual

  • Executando comandos em 2 nós: No Nó B e no Nó C, você pode fazer o seguinte -

$ consul join <Node A Address>
  • Executando o comando em 1 nó -

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

Usando o encaminhamento de DNS

DNS é servido de port 53. O encaminhamento de DNS pode ser feito usandoBIND, dnsmasq e iptables. Por padrão, o agente do Consul executa um servidor DNS escutando na porta 8600. Ao enviar solicitações de DNS ao servidor DNS do agente do Consul, você pode obter o endereço IP de um nó que executa o serviço no qual está interessado.

A interface Consul DNS disponibiliza as informações da porta de um serviço por meio do SRV records. Sem adicionar manualmente a lógica em seu código, geralmente você está limitado apenas às informações do endereço IP (ou seja, um registro) do serviço que está consultando.

A melhor opção é ter vários servidores BIND, cada um executando um agente Consul localmente. Todas as consultas recebidas por um servidor BIND serão encaminhadas ao servidor DNS do agente Consul local.

Usando Bind

Podemos usar o encaminhamento de DNS usando a função Bind. Isso pode ser feito usando o seguinte comando.

$ sudo apt-get install bind9 bind9utils bind9-doc

A saída seria conforme mostrado na captura de tela a seguir.

Vamos editar o arquivo /etc/bind/named.conf com o seguinte comando.

$ sudo vim /etc/bind/named.conf

No arquivo, adicione as seguintes linhas abaixo da última linha do 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";

A saída seria conforme mostrado na captura de tela a seguir.

Você pode usar o seguinte comando Bind para configurar o Consul.

$ sudo vim /etc/bind/consul.conf

Adicione as seguintes linhas ao criar o arquivo -

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

Agora você pode começar a operar seu agente cônsul usando o seguinte comando. (Lembre-se de reiniciar o serviço bind9 também.)

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

O sistema precisa ser configurado para enviar consultas ao servidor DNS do agente Consul local. Isso é feito atualizando oresolv.confarquivo no sistema para apontar para 127.0.0.1. Na maioria dos casos, o Consul precisará ser configurado para funcionar na porta 53.

Você pode adicionar as seguintes informações ao /etc/resolv.conf:

nameserver 127.0.0.1

Cache DNS

O Consul exibe todos os resultados de DNS com um valor '0 TTL' (Time to Live). Isso evita qualquer armazenamento em cache. No entanto, devido aos valores TTL, ele pode ser configurado para permitir que os resultados DNS sejam armazenados em cache com o downstream do Consul. Valores TTL mais altos reduzem o número de pesquisas nos servidores Consul e aceleram as pesquisas de clientes, ao custo de resultados cada vez mais desatualizados.

Para isso, usaremos o cache DNS usando o método abaixo -

$ sudo apt-get install dnsmasq

A saída seria conforme mostrado na captura de tela a seguir.

Agora, podemos fazer uma configuração muito simples -

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

Tudo o que estamos fazendo aqui é especificar as solicitações de DNS para serviços de cônsul, que devem ser tratadas pelo servidor DNS em 127.0.0.1 na porta 8600. A menos que você altere os padrões do cônsul, isso deve funcionar.

Em casos normais, o seguinte comando deve ser usado.

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

Com Dnsmasq, você deve usar o seguinte comando.

$ dig web.service.consul

A saída seria conforme mostrado na captura de tela a seguir.