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

Conexão Kinghost: Orquestração de Contêineres c...

Conexão Kinghost: Orquestração de Contêineres com Docker Swarm

Palestra apresentada dia 28 de setembro de 2017 no Conexão KingHost (https://conexaokinghost.com.br/) transmitida on-line para os participantes cadastrados. Mostramos alguns problemas comuns ao portar uma aplicação baseada em contêineres Docker para produção e como orquestração os resolve. Também fizemos uma demonstração de algumas features do Docker Swarm rodando em um cluster de raspberries.

Wellington F. Silva

September 28, 2017
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Whoami Contact: @_wsilva Nicks: wsilva tom boina fisi Roles: pai,

    téc. telecom, programador, sysadmin, instrutor, escritor, docker community leader
  2. Agenda • Docker 101 • Fluxo básico de trabalho com

    Docker • Problemas comuns em Produção • Orquestração • Revisitando conceitos • Docker Swarm (e Swarm mode)
  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. 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

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

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

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

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

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

    vida dos contêineres? • Como escalar? • Como recriar contêineres que morrem?
  12. 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?
  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? • Onde colocar meus contêineres?
  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? • Como um contêiner comunica com outro em outra máquina?
  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 um contêiner comunica com outro em outra máquina? • Como gerenciar informações sensíveis?
  16. Orquestração Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously
  17. 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.
  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 (Coordenação de elementos) • Contêineres • Hosts • Redes

    • Volumes • Monitoramento Maestro João Carlos Martins
  20. Orquestração (Efeitos desejados) • Aplicação sempre rodando • Escalabilidade automática

    • Tolerância a falha (failover, rebalanceamento, health checks, etc) • Melhor utilização de recursos • Minimizar intervenção manual
  21. Revisitando conceitos • Cluster • Service Discovery • Load balance

    • High Availability (HA) • Auto Scalability
  22. Docker Swarm (contexto) • Criado e gerido pela Docker Inc

    • Lançado em junho de 2015, beta e dependente de service discovery externo
  23. Docker Swarm (contexto) • 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 em julho de 2016 - pronto para produção - batizado de Swarm Mode
  24. Docker Swarm (contexto) • 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 em julho de 2016 - pronto para produção - batizado de Swarm Mode • Melhorado na versão 1.13 com adição de secrets e stacks, e na 17.06 com configs
  25. Swarm Mode (componentes) Manager Service 3 réplicas de nginx nginx.1

    node A nginx.2 node C nginx.3 node B Contêiner Task Node Workers
  26. Swarm Mode (nós) • Managers • Podem ser despromovidos (demote)

    • Workers • Podem ser promovidos (promote)
  27. Swarm Mode (nós) • Managers • Podem ser despromovidos (demote)

    • Workers • Podem ser promovidos (promote) • Podemos controlar as atividades dos nós 
 
 $ docker node update --availability drain
 $ docker node update --availability pause
 $ docker node update --availability active
  28. Worker Worker Worker Worker Worker raft consensus group Manager (líder)

    Manager Manager CA CA CA TLS TLS TLS TLS TLS TLS TLS TLS Swarm Mode (nós) gossip network
  29. Swarm Mode (High Availability - HA) • Managers compartilham dados

    e logs via raft • Se o manager líder falhar outro manager assume
  30. Swarm Mode (High Availability - HA) • Managers compartilham dados

    e logs via raft • Se o manager líder falhar outro manager assume • Devemos manter o quorum (maioria de votos): igual a (n/2+1), n é números de nós managers
  31. Swarm Mode (Quorum) Qtde de managers Quorum Qtde de falhas

    1 1 0 2 2 0 3 2 1 4 3 1 5 3 2 6 4 2 7 4 3
  32. Swarm Mode (Quorum) Qtde de managers Quorum Qtde de 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 (RAFT Consensus) • Demos dos casos do algoritmos

    • http://thesecretlivesofdata.com/raft • http://demo.consensus.group
  34. Swarm Mode (Agendamento) API Orchestrator Alocator Dispatcher Scheduler $ docker

    service create nginx Recebe o comando e cria o service Mantém o reconciliation e cria tasks Aloca ip para as tasks Manda as tasks para os nós Pede para um worker rodar a task Manager Worker Executor Worker Conecta no dispatcher e busca tasks Executa as tasks
  35. Swarm Mode (Funcionalidades) • Scheduler 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 (Funcionalidades) • Encriptação TLS ponta a ponta entre

    todos os nós e com rotação automática de chaves
  37. Swarm Mode (Funcionalidades) • Protegendo acesso indevido ao cluster com

    autolock
 
 $ docker swarm init --autolock
 $ docker swarm update --autolock

  38. Swarm Mode (Funcionalidades) • Secrets - gravado 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 • Dentro do container a senha fica em 
 
 $ cat /run/secrets/senha-db 
 senha
  39. Swarm Mode (Funcionalidades) • Configs - gravado no tmpfs e

    montado nos contêineres do serviço que vai utilizar o config
 
 $ echo "config" | docker config create cfg-demo -
 $ docker service update \
 --config—add=cfg-demo demo • Dentro do container a config fica em 
 
 $ cat /cfg-demo 
 config
  40. Swarm Mode (Funcionalidades) • Healthcheck - Permite fazer health check

    de serviços, dentro dos contêineres. • As imagens e a aplicação devem implementar métodos para a checagem
  41. Swarm Mode (Funcionalidades) • Controle do update de stacks e

    serviços.
 
 $ docker service update
 
 --update-parallelism --update-order 
 --update-monitor --update-delay
 --update-max-failure-ratio
 --update-failure-action
  42. Swarm Mode (Funcionalidades) • Controle do rollback de stacks e

    serviços.
 
 $ docker service update --rollback
 
 --rollback-parallelism 
 --rollback-order --rollback-monitor 
 --rollback-max-failure-ratio 
 --rollback-failure-action 
 --rollback-delay
  43. Swarm Mode (Funcionalidades) • Centraliza os logs dos serviços
 


    $ docker service logs --tail 10 \
 demo | sort -k3 -k4
  44. Quer mais?
 Curso presencial mão na massa: 
 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