Skip to content

Instantly share code, notes, and snippets.

@GabrielMMelo
Created May 12, 2019 14:46
Show Gist options
  • Save GabrielMMelo/11475f08910a371ff3f997b92c7d3908 to your computer and use it in GitHub Desktop.
Save GabrielMMelo/11475f08910a371ff3f997b92c7d3908 to your computer and use it in GitHub Desktop.
A simple docker powered container management with load balancing with docker swarm and services
# Garanta que possua 3 máquinas acessíveis remotamente e que possuam docker instalado
@ 1# máquina
# inicializar o cluster (swarm), criar um manager e gerar token para worker
docker swarm init --advertise-addr <ADDRESS>
@ 2# e 3# máquina
# incluir um worker
docker swarm join --token <TOKEN> <ADDRESS>:<PORT>
@ (opcional) 1# máquina
# criar token para um manager (redundância)
docker swarm join-token manager
@ (opcional) 2# ou 3# máquina
# incluir um manager
docker swarm join --token <TOKEN_MANAGER> <ADDRESS>:<PORT>
@ 1# máquina
# inspecionar os nós do cluster
docker node inspect <NOME_NODE>
@ 1# máquina
# promover um worker para manager
docker node promote <NOME_NODE>
@ 1# máquina
# criar um service em dois nodes
docker service create --name valida-cpf-service --replicas 2 -p 8080:8080 gabrielmmelo/valida-cpf
@ 1# máquina
# visualizar em qual node cada container está rodando
docker service ps valida-cpf-service
@ 1# máquina
# rodar requisições de teste
# repita esse comando para ver o load balancing nativo do docker funcionando e retornando um ip diferente de cada
# última requisição (o algoritmo utilizado é um round-robin também)
curl <IP_#1_MAQUINA>:8080
# escalar a replicação para mais um node
docker service scale valida-cpf-service=3
@ 1# máquina
# visualizar em qual node cada container está rodando, note que são 3 nodes rodando agora
docker service ps valida-cpf-service
@ 1# máquina
# rodar, novamente, requisições de teste
curl <IP_#1_MAQUINA>:8080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment