4
respostas

ROUTING MESH - Exibição do Node na consulta com service ps id

Foi informado nesta aula que quando chamamos uma URL via IP de cada vm com a porta 8080 ao consultar os comandos abaixo conseguiríamos ver em qual node estaria rodando aquela aplicação no momento.

docker node ls
docker service ps Numero_do_ID

Porém quando faço somente retonar o node vm1

docker@vm1:~$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
jusnm02908xj7fiaxk06uaagf *   vm1                 Ready               Active              Leader              19.03.5
wm7739ufr4h6bt8aonjci12gv     vm2                 Ready               Active                                  19.03.5
qc3m8rffki6acvj8ljzfqandk     vm3                 Ready               Active                                  19.03.5
docker@vm1:~$
docker@vm1:~$
docker@vm1:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
4myiad3rebgu        nostalgic_bose      replicated          1/1                 aluracursos/barbearia:latest   *:8080->3000/tcp
docker@vm1:~$
docker@vm1:~$
docker@vm1:~$ docker service ps 4my
ID                  NAME                IMAGE                          NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
dm1vesatt37d        nostalgic_bose.1    aluracursos/barbearia:latest   vm1                 Running             Running 46 minutes ago
docker@vm1:~$
docker@vm1:~$
docker@vm1:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
4myiad3rebgu        nostalgic_bose      replicated          1/1                 aluracursos/barbearia:latest   *:8080->3000/tcp
docker@vm1:~$ docker service ps 4my
ID                  NAME                IMAGE                          NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
dm1vesatt37d        nostalgic_bose.1    aluracursos/barbearia:latest   vm1                 Running             Running 47 minutes ago
docker@vm1:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
4myiad3rebgu        nostalgic_bose      replicated          1/1                 aluracursos/barbearia:latest   *:8080->3000/tcp
docker@vm1:~$ docker service ps 4my
ID                  NAME                IMAGE                          NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
dm1vesatt37d        nostalgic_bose.1    aluracursos/barbearia:latest   vm1                 Running             Running 47 minutes ago
docker@vm1:~$ docker service ps 4my
ID                  NAME                IMAGE                          NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
dm1vesatt37d        nostalgic_bose.1    aluracursos/barbearia:latest   vm1                 Running             Running 48 minutes ago
docker@vm1:~$
docker@vm1:~$
docker@vm1:~$
docker@vm1:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
4myiad3rebgu        nostalgic_bose      replicated          1/1                 aluracursos/barbearia:latest   *:8080->3000/tcp
docker@vm1:~$ docker service ps 4my
ID                  NAME                IMAGE                          NODE                DESIRED STATE       CURRENT STATE               ERROR               PORTS
dm1vesatt37d        nostalgic_bose.1    aluracursos/barbearia:latest   vm1                 Running             Running about an hour ago
docker@vm1:~$                                                                                                                                                                                                                                     
4 respostas

OBS, so consegui ver a alteração quando exclui um node vm2 e vm3, fora isso quando executo alguma consulta via web em navegadores diferentes com 15 paginas aberta simultaneamente não mostra a carga indo para outra maquina.

Olá Jose Carlos, tudo bem? É isso mesmo, esse é o comportamento, o Swarm decidiu colocar a aplicação pra ser executada no sua máquina vm1, porém quando colocamos qualquer um dois IPs das outras máquinas sempre estaremos sendo direcionados pra a vm1, nesse caso não temos uma distribuição de carga, poderíamos ter se tivéssemos mais de uma máquina rodando a mesma aplicação. A tarefa do ROUTING MESH é abstrair a questão do direcionamento dentro do Swarm, por isso mesmo que informamos a URL da vm2 seremos sempre redirecionados para a vm1. Para balanceamento de carga teríamos que estar com a aplicação executando em mais de uma máquina, e também teríamos que simular um estresse no ambiente, usando algum método ou programa especifico pra isso, já que manualmente é inviável.

Espero ter esclarecido sua dúvida!

Opa Bom dia Jonilson esclareceu sim.

Ate estou vendo melhor com a parte das replicas globais aqui agora.

Mas queria colocar um link na chamada pelo browser em vez do IP mas não estou localizando esta opção.

Existe esta opção?

Bem José Carlos, nesse caso estamos apenas montando um ambiente de testes local, num cenário real estaríamos com esse Swarm em nuvem, e poderíamos colocar um DNS e tudo seria resolvido pelo ROUTING MESH, poderíamos informar que o DNS fosse direcionado pra a vm1 porém internamente o Swarm faria o encaminhamento correto. Nesse ambiente de teste você pode utilizar o que chamamos de virtual hosts, se seu sistema operacional for Linux, você pode simplesmente ir no arquivo /etc/hosts e adicionar uma nova linha como essa:

<IP-DA-MAQUINA-SWARM>       barbearia.test

Assim você consegue simular o que deseja!