Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Orquestração de contêinerer usando Swarm (Devop...

Orquestração de contêinerer usando Swarm (DevopsDays Salvador 2017)

Palestra apresentada dia 28 de outubro de 2017 no DevOps Days de Salvador. Mostramos um pouco do que é Docker, alguns conceitos de orquestração de contêineres, demostramos como montar, como colocar serviços para rodar e como funcionam as principais funcionalidades do Swarm mode.

Wellington F. Silva

October 28, 2017
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Wellington F. Silva contato: @_wsilva nicks: wsilva, boina, tom, fisi

    funções: pai, tec. telecom, programador, sysadmin, docker community leader, instrutor, escritor
  2. Agenda • Docker 101 • Fluxo básico de trabalho com

    Docker • Problemas comuns em Produção • Orquestração • Revisitando conceitos • Docker Swarm (Swarm mode) • Algumas features
  3. Tipos de Virtualização • Full Virtualization • Partial Virtualization •

    Paravirtualization • OS Level Virtualization Docker
  4. SERVIDOR SERVIDOR HOST OS HOST OS CONTAINER ENGINE HYPERVISOR BINS/LIBS

    GUEST OS BINS/LIBS GUEST OS BINS/LIBS BINS/LIBS APP APP APP APP VM VM Container Container
  5. Diferentes, não excludentes SERVIDOR XEN UBUNTU LINUX DOCKER ENGINE BINS/LIBS

    MYSQL DEBIAN LINUX BINS/LIBS NGINX BINS/LIBS PHP-FPM DOCKER ENGINE WINDOWS 2016 SERVER BINS/LIBS SQL SERVER
  6. Fluxo básico de trabalho com Docker Client Docker Host docker

    run redis docker daemon Contêineres Imagens Registry
  7. Fluxo básico de trabalho com Docker Client Docker Host docker

    run redis docker daemon Contêineres Imagens Registry
  8. Fluxo básico de trabalho com Docker Client Docker Host docker

    run redis docker daemon Contêineres Imagens Registry
  9. Fluxo básico de trabalho com Docker Client Docker Host docker

    run redis docker daemon Contêineres Imagens Registry
  10. Fluxo básico de trabalho com Docker Client Docker Host docker

    run redis docker daemon Contêineres Imagens Registry
  11. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar?
  12. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem?
  13. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem? • Como atualizar o sistema sem downtime?
  14. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem? • Como atualizar o sistema sem downtime? • Onde colocar meus contêineres?
  15. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem? • Como atualizar o sistema sem downtime? • Onde colocar meus contêineres? • Como os contêineres vão se comunicar?
  16. Problemas comuns em Produção • Como gerenciar o ciclo de

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem? • Como atualizar o sistema sem downtime? • Onde colocar meus contêineres? • Como os contêineres vão se comunicar? • Como gerenciar informações sensíveis?
  17. ORQUESTRAÇÃO Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously
  18. ORQUESTRAÇÃO Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously Tradução livre: O planejamento ou a coordenação dos elementos de uma situação para produzir um efeito desejado, especialmente evitando chamar atenção
  19. ORQUESTRAÇÃO Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously Tradução livre: O planejamento ou a coordenação dos elementos de uma situação para produzir um efeito desejado, especialmente evitando chamar atenção
  20. Orquestração
 (efeitos desejados) • Aplicação rodando • Escalabilidade automática •

    Tolerante a falha (failover, rebalanceamento, health checks, etc) • Melhor utilização de recursos • Minimizar intervenção manual
  21. Docker Swarm (contextualizando) • Criado e gerido pela Docker Inc

    • Lançado em junho de 2015, beta e dependente de service discovery externo
  22. Docker Swarm (contextualizando) • Criado e gerido pela Docker Inc

    • Lançado em junho de 2015, beta e dependente de service discovery externo • Incorporado ao engine do Docker na versão 1.12 (28/07/2016) - pronto para produção - Swarm Mode
  23. Docker Swarm (contextualizando) • Criado e gerido pela Docker Inc

    • Lançado em junho de 2015, beta e dependente de service discovery externo • Incorporado ao engine do Docker na versão 1.12 (28/07/2016) - pronto para produção - Swarm Mode • Melhorado na v1.13 e 17.06 com secrets, stacks, configs, autolock
  24. Swarm mode (Componentes) Service web nginx
 (3 réplicas) Task: nginx.1

    node A task: nginx.2 node C task: nginx.3 node B Container 1 Container 2 Container 3
  25. • Workers • instâncias que rodam contêineres e reportam os

    estados deles • Managers Swarm mode (Nodes)
  26. • Workers • instâncias que rodam contêineres e reportam os

    estados deles • Managers • decidem onde contêineres devem ser executados Swarm mode (Nodes)
  27. • Workers • instâncias que rodam contêineres e reportam os

    estados deles • Managers • decidem onde contêineres devem ser executados • mantém o desired state dos serviços Swarm mode (Nodes)
  28. • Workers • instâncias que rodam contêineres e reportam os

    estados deles • Managers • decidem onde contêineres devem ser executados • mantém o desired state dos serviços • gerenciam o cluster Swarm mode (Nodes)
  29. Swarm mode (Topologia) Worker Worker Worker Worker Worker raft consensus

    group Manager (líder) Manager Manager CA CA CA TLS TLS TLS TLS TLS TLS TLS TLS gossip network
  30. • Managers compartilham dados via raft • Se o líder

    falhar outro manager assume Swarm mode (HA)
  31. • Managers compartilham dados via raft • Se o líder

    falhar outro manager assume • Devemos manter o quorum (maioria de votos): (n/2+1), n é números de nós managers Swarm mode (HA)
  32. Swarm mode (Quorum) Qtde managers Quorum Qtde falhas 1 1

    0 2 2 0 3 2 1 4 3 1 5 3 2 6 4 2 7 4 3
  33. Swarm mode (Quorum) Qtde managers Quorum Qtde falhas 1 1

    0 2 2 0 3 2 1 4 3 1 5 3 2 6 4 2 7 4 3
  34. Swarm mode (scheduler) $ docker service create nginx API Orchestrator

    Allocator Dispatcher Scheduler Worker Executor Worker Manager
  35. Swarm mode (features) Scheduler focado em HA e com conhecimento

    de topologia $ docker node update \
 --label-add "az=sa-east-1" \
 demo $ docker service create \
 --placement-pref "spread=node.label.az" \
 demo
  36. Swarm mode (features) Encriptação TLS ponta a ponta entre todos

    os nós e com rotação automática de chaves $ docker swarm ca --help
  37. Swarm mode (features) Protege acesso indevido ao cluster com autolock

    $ docker swarm init --autolock
 $ docker swarm update --autolock
  38. Swarm mode (features) Gerencia de secrets, qualquer coisa de até

    500Kb que fica encriptada $ echo "senha" | docker secret \
 create senha-db - $ docker service create \
 --secret-add=senha-db demo $ docker service update \
 --secret-rm=senha-db demo
  39. Swarm mode (features) Dentro dos contêineres a secret, será montada

    em um tmpfs em /run/secret/secret-name # cat /run/secrets/senha-db
 senha
  40. Swarm mode (features) Gerencia de config, muito similar ao secret,

    porém não encriptado e não é montado no tmpfs $ echo "config" | docker config \
 create cfg-demo - $ docker service create \
 --config-add=cfg-demo demo $ docker service update \
 --config-rm=cfg-demo demo
  41. Swarm mode (features) Facilita healthcheck, não só o contêiner mas

    as app dentro do serviço pode ser monitorada A aplicação e a imagem Docker criada devem implementar os métodos de checagem
  42. Swarm mode (features) Controle de update de serviços $ docker

    service update \
 --update-parallelism \
 --update-order \
 --update-monitor \
 --update-delay \
 --update-max-failure-ratio \
 --update-failure-action
  43. Swarm mode (features) Controle de rollback de serviços se for

    usado 
 --update-failure-action=rollback então em caso de falhas o rollback é automático $ docker service update --rollback \
 --rollback-parallelism \
 --rollback-order \
 --rollback-monitor \
 --rollback-delay \
 --rollback-max-failure-ratio \
 --rollback-failure-action
  44. Grato 
 Quer mais? • Curso: 
 http://bit.ly/curso-docker • Telegram:

    
 http://t.me/dockerbr • Slacks:
 http://bit.ly/docker-slack
 http://dockr.ly/community • Meetup em SP:
 http://bit.ly/meetup- docker-sp