$30 off During Our Annual Pro Sale. View Details »

Orquestração de contêineres Docker usando Swarm (Meetup Devops Campinas)

Orquestração de contêineres Docker usando Swarm (Meetup Devops Campinas)

Palestra apresentada dia 05 de julho de 2017 no meetup de DevOps de Campinas realizado no salão da Superlógica. Mostramos alguns conceitos de orquestração de contêineres, mostramos alguns dos orquestradores mais utilizados no momento, demostramos como montar, como colocar serviços para rodar e como funcionam as principais funcionalidades do Swarm mode.

Wellington F. Silva

July 05, 2017
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Orquestração de
    contêineres
    Docker usando
    SWARM

    View Slide

  2. Wellington F. Silva
    contato:
    @_wsilva
    nicks:
    wsilva, boina, tom, fisi
    funções:
    pai, tec. telecom,
    programador, instrutor,
    escritor

    View Slide

  3. Agenda
    • Fluxo básico de trabalho com Docker
    • Problemas comuns em Produção
    • Orquestração
    • Revisitando conceitos
    • Alguns orquestradores
    • Docker Swarm (ou Swarm mode)

    View Slide

  4. Disclaimer
    Hoje não faremos Docker 101

    View Slide

  5. O que é DOCKER?

    View Slide

  6. View Slide

  7. View Slide

  8. O que é DOCKER?

    View Slide

  9. –Wellington F. Silva
    “Ferramenta para
    virtualização no nível do
    Sistema Operacional.”

    View Slide

  10. Tipos de
    Virtualização

    View Slide

  11. Tipos de Virtualização
    • Full Virtualization

    View Slide

  12. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization

    View Slide

  13. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization

    View Slide

  14. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization

    View Slide

  15. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization Docker

    View Slide

  16. Docker NÃO é VM

    View Slide

  17. 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

    View Slide

  18. 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

    View Slide

  19. Fluxo básico de
    trabalho com Docker?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. Como escalar isso para
    vários servidores?

    View Slide

  27. Como escalar isso para
    vários servidores?
    ORQUESTRAÇÃO

    View Slide

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

    View Slide

  29. 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: O planejamento ou a coordenação dos
    elementos de uma situação para produzir um efeito
    desejado, especialmente evitando chamar atenção

    View Slide

  30. 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: O planejamento ou a coordenação dos
    elementos de uma situação para produzir um efeito
    desejado, especialmente evitando chamar atenção

    View Slide

  31. Orquestração

    (elementos)
    • Contêineres
    • Hosts
    • Redes
    • Volumes
    • Monitoramento

    View Slide

  32. 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

    View Slide

  33. Revisitando
    Conceitos

    View Slide

  34. Revisitando Conceitos
    • Cluster

    View Slide

  35. Revisitando Conceitos
    • Cluster
    • Service Discovery

    View Slide

  36. Revisitando Conceitos
    • Cluster
    • Service Discovery
    • Load balance

    View Slide

  37. Revisitando Conceitos
    • Cluster
    • Service Discovery
    • Load balance
    • High Availability (HA)

    View Slide

  38. Revisitando Conceitos
    • Cluster
    • Service Discovery
    • Load balance
    • High Availability (HA)
    • Auto Scale

    View Slide

  39. Orquestradores

    View Slide

  40. Docker Swarm

    View Slide

  41. 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

    View Slide

  42. Swarm Mode

    View Slide

  43. • Workers - instâncias que rodam contêineres e
    reportam os estados deles
    Swarm mode
    (Topologia)

    View Slide

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

    View Slide

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

    View Slide

  46. • Workers - instâncias que rodam contêineres e
    reportam os estados deles
    • Managers - instâncias que decidem onde e
    como contêineres devem ser executados
    • Mantém o desired state dos serviços
    • Podem receber contêineres também
    Swarm mode
    (Topologia)

    View Slide

  47. Swarm mode
    (Topologia)
    Manager (líder)
    Worker Worker Worker Worker Worker
    Scheduler Service
    Discovery
    Manager
    Scheduler Service
    Discovery
    Manager
    Scheduler Service
    Discovery
    raft - consensus

    View Slide

  48. • Managers compartilham dados via raft
    Swarm mode
    (HA)

    View Slide

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

    View Slide

  50. • Managers compartilham dados via raft
    • Se o líder falhar outro manager assume
    • Devemos manter o quorum (n/2+1)
    Swarm mode
    (HA)

    View Slide

  51. 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

    View Slide

  52. Swarm mode
    (Consensus)
    http://thesecretlivesofdata.com/raft


    View Slide

  53. Swarm mode
    (Consensus)
    http://thesecretlivesofdata.com/raft

    http://demo.consensus.group 

    (by Laura Frank)

    View Slide

  54. Swarm mode
    (features)
    • Scheduler focado em HA

    View Slide

  55. Swarm mode
    (features)
    • Scheduler focado em HA
    • Scheduler com conhecimento de topologia

    View Slide

  56. Swarm mode
    (features)
    • Scheduler focado em HA
    • Scheduler com conhecimento de topologia
    $ docker node update --label-add az=sa-
    east-1 node-xpto
    $ docker service create --placement-
    pref 'spread=node.label.az' demo

    View Slide

  57. Swarm mode
    (features)
    • Encriptação TLS ponta a ponta entre todos os
    nós e com rotação automática de chaves

    View Slide

  58. Swarm mode
    (features)
    • Encriptação TLS ponta a ponta entre todos os
    nós e com rotação automática de chaves
    • As chaves podem ser encriptadas usando a
    função autolock

    View Slide

  59. Swarm mode
    (features)
    • Encriptação TLS ponta a ponta entre todos os
    nós e com rotação automática de chaves
    • As chaves podem ser encriptadas usando a
    função autolock
    $ docker swarm init --autolock

    View Slide

  60. Swarm mode
    (features)
    • Permite gerencia de secrets - gravada no tmpfs
    e montado nos contêineres do serviço que vai
    utilizar o secret

    View Slide

  61. Swarm mode
    (features)
    • Permite gerencia de secrets - gravada no tmpfs
    e montado nos contêineres do serviço que vai
    utilizar o secret
    $ echo "senha" | docker secret create
    senha-db -
    $ docker service update --secret-
    add=senha-db demo

    View Slide

  62. Swarm mode
    (features)
    • Permite gerencia de configs - da mesma
    maneira que o secret

    View Slide

  63. Swarm mode
    (features)
    • Permite gerencia de configs - da mesma
    maneira que o secret
    $ echo "teste" | docker config create
    config-app -
    $ docker service update --config-
    add=config-app demo

    View Slide

  64. Swarm mode
    (features)
    • Permite fazer health check de serviços, dentro
    dos contêineres

    View Slide

  65. Swarm mode
    (features)
    • Permite fazer health check de serviços, dentro
    dos contêineres
    • Permite controle do update da aplicação

    View Slide

  66. Swarm mode
    (features)
    • Permite fazer health check de serviços, dentro
    dos contêineres
    • Permite controle do update da aplicação

    --update-parallelism --update-order 

    --update- monitor --update-delay

    --update-max-failure-ratio

    View Slide

  67. Swarm mode
    (features)
    • Permite controle do rollback da aplicação

    View Slide

  68. Swarm mode
    (features)
    • Permite controle do rollback da aplicação

    --update-failure-action=rollback 

    docker service update --rollback

    --rollback-parallelism 

    --rollback-order --rollback-monitor 

    --rollback-max-failure-ratio 

    --rollback-failure-action 

    --rollback-delay

    View Slide

  69. Swarm mode
    (features)
    • Permite centralizar logs dos serviços

    View Slide

  70. Swarm mode
    (features)
    • Permite centralizar logs dos serviços

    --update-failure-action=rollback 

    docker service logs --tail 10 demo |
    sort -k3 -k4

    View Slide

  71. –Linus Torvalds
    “Talk is cheap. Show me
    the code.”

    View Slide

  72. Demo

    View Slide

  73. Grato

    Próximos Passos:
    • Curso: 

    http://bit.ly/curso-docker
    • Telegram: 

    http://t.me/dockerbr
    • Slacks:

    http://bit.ly/docker-slack

    http://dockr.ly/community
    • Meetup:

    http://bit.ly/meetup-
    docker-sp

    View Slide