Upload
fernando-ike
View
145
Download
0
Embed Size (px)
Citation preview
Containers Cluster
Docker Swarm
Fernando Ike
[email protected] http://www.fernandoike.com
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
Fernando Ike
[email protected] http://www.fernandoike.com
Bônus
Bônus● Discovery Service
● Schedule
● Storage
● HealthCheck
● Segurança - TLS
● Mesh
● Rebalance