Docker Swarm Cluster

Preview:

Citation preview

Containers Cluster

Docker Swarm

Docker Swarm

Docker Swarm e Swarmkit são "AS" ferramentas de gerenciamento de clusters nativo (Engine 1.12) para containers Docker.

Bacanices● Gerenciamento de cluster integrado com Docker Engine

● Escalável

● Modelo Declarativo de serviço

● Multihost

● Service Discovery

● Balanceamento de carga

● TLS habilitado por padrão

● Rolling Updates

● Compatível com versões anteriores

O que é "Containers Orchestration"

Orquestração de containers

“Automação contínua, scheduling, coordenação e gerenciamento de sistemas complexos de componentes em

containers e os recursos por eles consumidos"

Karl Isenberg

"Container Orchestration Systems"● Docker Swarm

● CoreOS Fleet

● Kubernetes

● Mesosphere Marathon

● Cloud Foundry Diego

Manager e Workers

Managers● Gerencia todos os nós de cluster Swarm

● Algoritmo Raft Consensus

● Managers podem ser usados como Workers

● Não use todos os nós como Managers

● Managers também pode ser Workers

Workers● Workers são os nodes que "rodam" os containers "fim"

● Eles não participam das eleições dos managers

● Eles podem ser promovidos à manager

● Não há um limite de Workers

Raft ConsensusAlgoritmo para "resolver o problema" de Managers elege o líder

Líder é responsável por enviar o status entre todos os managers

Caso o líder caia, uma nova eleição é realizado com os restantes

Service Discovery

Preparando a instalação

$for N in $(seq 1 4); do docker-machine create -d virtualbox node$N; done

Docker-Machine

$docker-machine ssh node1$docker-machine ssh node2$docker-machine ssh node3$docker-machine ssh node4

No baremetal

$docker info|grep Swarm

Check Swarm

$docker-machine ip node1

$docker swarm init --advertise-addr 192.168.99.100

Iniciando o cluster

$docker swarm join \ --token TOKEN_SWARM \ 192.168.99.100:2377

Adicionando um node

$docker node ls && \ docker node promote node3 && \

docker node ls

Criando rede wordpress

$docker network create --driver overlay wordpress &&\ docker network ls

Promovendo um Worker para Manager

$docker service create --name mysql \ --network wordpress \ --env MYSQL_ROOT_PASSWORD=wordpress \ --env MYSQL_DATABASE=wordpress \ --env MYSQL_USER=wordpress \ --env MYSQL_PASSWORD=wordpress mysql

Wordpress

$docker service create --name wordpress \ --network wordpress \ --env WORDPRESS_DB_HOST=mysql:3306 \ --env WORDPRESS_DB_PASSWORD=wordpress \ --publish 8000:80 wordpress

$docker service ls

MySQL

$curl || firefox http://IP_NODE1:8000/$curl || firefox http://IP_NODE2:8000/$curl || firefox http://IP_NODE3:8000/

$docker service ps wordpress

Testando...

$docker service rm wordpress

Removendo serviço

Links

1. https://commons.wikimedia.org/wiki/File:Tanjong_Pagar_container_terminal_from_Asia_Square._(13947299293).jpg

2. https://en.wikipedia.org/wiki/File:Container_terminal_northport.jpg

3. https://en.wikipedia.org/wiki/File:BNSF_5216_West_Kingman_Canyon_AZ_(293094839).jpg

4. http://pt.slideshare.net/KarlIsenberg/container-orchestration-wars

5. http://thesecretlivesofdata.com/raft/

6. http://www.slideshare.net/jfnredes/what-you-need-to-do-containers-orchestration-interdevops-2016-sp

7. http://www.slideshare.net/linux.rafa/docker-112-swarm-mode?qid=c6eea02a-ba53-418e-8900-2b01423dfd4b&v=&b=&from_search=3

Bônus

Bônus● Discovery Service

● Schedule

● Storage

● HealthCheck

● Segurança - TLS

● Mesh

● Rebalance

Recommended