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.