Consul - Trabalhando com Microsserviços

Neste capítulo, entenderemos como os microsserviços funcionam com a Consul. Também aprenderemos como os seguintes componentes afetam o Consul.

  • Usando o docker
  • Criando registrador para descoberta de serviço
  • Usando rkt e Nomad

Vamos agora discutir cada um deles em detalhes.

Usando Docker

Antes de começar, please do not use this setup in productionpois é usado apenas para fins de demonstração. Docker é um serviço baseado em contêiner com o qual podemos facilmente implantar nossos aplicativos. Para usar o Consul, vamos usar a imagem do seguinte link –0

https://hub.docker.com/r/progrium/consul/.

Presume-se que seu sistema tenha o Docker instalado e configurado corretamente. Vamos tentar puxar para baixo a imagem do hub Docker, executando o seguinte comando -

$ docker pull progrium/consul

A saída seria conforme mostrado na imagem a seguir.

Vamos publicar algumas interfaces com suas portas (usando a opção -p no Docker) da maneira a seguir.

  • 8400 (RPC)
  • 8500 (HTTP)
  • 8600 (DNS)

Também de acordo com o pull feito, vamos definir o nome do host como node1. Você pode alterá-lo para o que quiser usando o -h flag com algum nome de host de sua preferência, conforme mostrado abaixo.

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap

A saída seria conforme mostrado na imagem a seguir.

Você também pode ativar o modo UI para o Consul usando -

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui

Você pode verificar a saída baseada na IU em http://localhost:8500. A captura de tela a seguir dá uma ideia melhor sobre a saída baseada na IU.

Para usar o cônsul sobre vários contêineres docker em nós diferentes, podemos executar os seguintes comandos em nós diferentes -

No Nó1

$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3

Onde, -bootstrap-expect 3 significa que o servidor cônsul esperará até que haja 3 pares conectados antes de autoinicializar e se tornar um cluster funcional.

Antes de prosseguir, precisamos obter o IP interno do contêiner inspecionando o contêiner. Para nosso uso, propósito de caso, vamos declarar o$ JOIN_IP.

$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"

No Nó2

Portanto, vamos iniciar o Nó2 e dizer a ele para se juntar ao Nó1 usando a variável declarada no programa fornecido acima.

$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP

No Nó 3

$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP

Criando registrador para descoberta de serviço

O Registrator automaticamente registra e cancela o registro de serviços para qualquer contêiner Docker inspecionando os contêineres à medida que eles ficam online. O registrador que estamos prestes a usar atualmente oferece suporte a registros de serviços conectáveis, que atualmente incluemConsul, Etcd e SkyDNS2. O uso do Registrador é altamente recomendado quando estamos interagindo com diferentes serviços na rede.

$ docker pull gliderlabs/registrator:latest

A saída seria conforme mostrado na imagem a seguir.

$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
 consul://localhost:8500

A saída seria conforme mostrado na imagem a seguir.

A saída que você recebeu é o ID do Docker Container que você acabou de iniciar. Você pode verificar se o contêiner está em execução ou não usando o comando -

$ docker ps -a

A saída seria como mostrado na imagem a seguir.

Você também pode visualizar os logs do Registrador usando o seguinte comando.

$ docker logs registrator

Usando rkt e Nomad

O rkt é outro serviço baseado em contêiner, que você pode usar em seu ambiente. É construído porCoreOS. O principal motivo para a construção do rkt foi melhorar a segurança, um dos problemas de crise do Docker quando ainda estava em desenvolvimento em 2013-14.

Quanto ao Consul, podemos usar o Rkt Registrator para trabalhar na descoberta de serviços com o Consul. Este projeto específico do registrador, que é coberto pelo rkt, está em desenvolvimento e estánot recommended for production level use.

Você pode verificar se o rkt está instalado ou não, acessando seu caminho e executando o seguinte comando.

$ ./rkt

Você pode verificar a saída para verificar se está instalada corretamente ou não conforme mostrado na imagem a seguir.

Para experimentar o rkt e o Consul, verifique - https://github.com/r3boot/rkt-registrator.

Ferramenta Nomad

Uma das opções mais utilizadas e favoritas é a ferramenta Nomad. Nomad é uma ferramenta para gerenciar um cluster de máquinas e executar aplicativos nelas. É similar àMesos ou Kubernetes. Por padrão, o Nomad cobre o driver Docker e rkt dentro dele mesmo. Então, se você está procurando uma implantação em larga escala de contêineres com Consul. Nomad pode ser uma boa solução para isso. Confira -https://www.nomadproject.io/docs/drivers/rkt.html para mais informações sobre o Nomad.