Docker : SWARM Cluster

O Docker Swarm é uma ferramenta nativa do Docker que permite a criação de clusters de Docker, sendo assim podendo criar diversos hosts de Docker com o mesmo pool de recursos, facilitando o deploy de containers.

É possível por exemplo criar um container sem necessariamente saber em qual host ele está, pois o Swarm disponibilidade uma API de integração, onde é possível realizar grande parte das atividades administrativas de um container.

 

Segue abaixo um exemplo de como a estrutura será criada com 2 nodes ao invéis de 3

 

 

1) Ambiente

Todas as vms são CentOS 7 .

Hardware  – 2 Gbs de RAM , 8 Gbs de HD e 2 vCPUs

10.0.0.21 – Docker Manager
10.0.0.22 – Docker SWARM Worker 1
10.0.0.23 – Docker SWARM Worker 2

O servidor de gerência irá administrar os containers entre o Workers.

 

2) Requisitos  

Será necessário instalar o Docker versão 1.6+

 

Versão utilizada no lab

Update da base de pacotes do yum

sudo yum check-update

 

Instação do Docker via script oficial

curl -fsSL https://get.docker.com/ | sh

 

No final adicione o usuário ao grupo do docker

sudo usermod -aG docker username

 

Start e definição no boot

systemctl start docker 
systemctl enable docker

 

3) Configuração do SWARM  

 

3.1 ) Definição do Manager

Baixando a imagem oficial

docker pull swarm 

Crie o cluster e guarde o valor gerado

docker swarm init --advertise-addr 10.0.0.21



3.2 ) Definição do Worker

Configurando os Nodes do SWARM

docker swarm join \
     --token SWMTKN-1-1ynzqw8s9p0ebakl4prgsf1df9ng5okddoiseqr9yf2p50dr5j-e2xv8u07j2j9ogbinhp3sj3bj \
     10.0.0.21:2377

Verifique se o Node está no cluster rodando o comando abaixo no Manager.

docker node ls

 

4) Deploy do serviço

Em nosso exemplo vamos criar o serviço nginx publicando a porta 81 com 5 replicas .

docker service create --name fajlinux-nginx --replicas 5 --publish 81:81 nginx

Verificando os serviços

docker service ps nginx