Nesse artigo, não irei explicar muita teoria e sim colocar a mão na massa para os primeiros passos com o swarm.
Primeiramente meu nome é Gabriel, e o conteúdo a ser abordado é para iniciantes em containers docker e orquestração com o swarm, vamos utilizar o Play with docker com ele conseguimos simular algumas instâncias com o docker já instalado.
Vamos começar, criando duas instâncias, e rodar no terminal: docker swarm init
(aconselho sempre que aprender algum comando novo, digita o — help
para ver todas opções possíveis).
Note que não foi possível iniciar nosso cluster swarm e o próprio swarm nos avisou que devemos especificar a rede a ser utilizada. No caso vamos utilizar a eth0 que é o ip externo de nossa instância, outro ponto a se atentar é quais portas de acesso devemos liberar, no caso como estamos utilizando PwD já vem configurado.
Digite no terminal: docker swarm init — advertise-addr 192.168.0.23
, esse é meu ip o seu certamente será diferente.
Note-se que nos foi retornado um comando com um token de acesso, utilizaremos ele para conectar as instâncias nesse nosso cluster criado. Dê um docker node ls
no node(instância) que iniciou o swarm, em seguida rode o comando de acesso na outra instância criada, volte para a node leader(iniciou o swarm) e novamente rode o comando docker node ls
, agora temos dois nodes, um leader e o outro worker.
Agora com as duas instâncias fazendo parte de nosso cluster, no node leader vamos criar um serviço com o seguinte comando: docker service create — name primeiros-passos -p 8080:80 nginx
, no terminal digite docker container ls
nas duas instâncias, viu a diferença? temos apenas um container em execução em apenas 1 node.
Volte para o node leader e rode o comando: docker service scale primeiros-passos=4
e depois docker service ls
você verá que o numero de replicas passou a ser 4/4, isso quer dizer que existe 4 containers em execução, agora de um docker container ls
, legal né, em cada instância existe 2 containers em execução e como estamos com a porta 8080 do container exposta, conseguimos fazer a requisição a esses containers e a cada chamada a requisição cairá em um container diferente.
Enfim, finalizamos a parte prática que queria mostrar nesse artigo, passarei algumas informações a seguir sobre o swarm e containers:
- Os containers diminuem diferenças entre ambiente de dev e prod, facilita o deploy, melhorar a produtividade pois é mais rápido a configuração e acabar de vez com o “funciona na sua maquina mas na minha não”.
- Em produção precisamos lidar melhor com os containers, ele são feitos para morrer, iniciar outro, então o container não deve manter estados, e para lidar melhor com a inicialização desses containers, trabalhar com micro serviços, alta disponibilidade e resiliência, precisamos orquestrar o comportamento dos containers e o swarm é uma boa ferramenta para isso.
- Uma curiosidade sobre os nodes é que o swarm utiliza uma conta simples, que é a divisão dos nodes leaders por dois, caso o resultado seja maior que 51% dos nodes leader totais, ele manterá o cluster rodando, ou seja em produção é recomendado ter sempre um número impar de nodes leader, exemplo: tenho 5 nodes leader, meu cluster estará em execução mesmo que caia até 2 nodes.
Em breve terá mais artigos sobre o swarm, e no final vamos aprender a subir uma aplicação real para produção e manter ela escalável e em alta disponibilidade.
Referências
Jeferson Fernando do Linux Tips
Artigo de Cristian Trucco
Documentação do swarm
Top comments (0)