Docker e CoreOS: escalando serviços usando fleet

Docker e CoreOS: escalando serviços usando fleet

Slides da palestra apresentada na trilha Desenvolvimento e Testes da AgileBrazil 2015, em 22/10/2015.

4b178f929b750c873b4d2b0c0a682051?s=128

Guilherme de Maio, nirev

October 22, 2015
Tweet

Transcript

  1. Docker e CoreOS: Docker e CoreOS: escalando serviços escalando serviços

    usando fleet usando fleet @nirev http://slides.com/nirev <guilherme@nirev.org>
  2. Quem sou eu? Quem sou eu? Greyjoy: time de busca

    e data science Guilherme Nogueira Ex-Desenvolvedor @ Elo7
  3. Greyjoy: Busca e Greyjoy: Busca e Data Science Data Science

    Todos rodando em containers Docker no CoreOS
  4. Por quê? Por quê?

  5. Antes Antes Imagem X Não dava pra testar localmente, apenas

    na AWS Ambiente local != produção Muito difícil de recriar do zero Imagem Y
  6. Antes - pt2 Antes - pt2 Código que cria a

    máquina == Fácil de recriar Mesma stack de integração e produção Muito chato de testar localmente, mas dá (Vagrant + hacks) Ambiente local != produção
  7. None
  8. None
  9. None
  10. None
  11. None
  12. Exemplo: Exemplo:

  13. None
  14. CoreOS CoreOS Boot rápido Distro leve Apps apenas em containers

    Atualizações on-the-fly SystemD
  15. SystemD SystemD

  16. cloud-config cloud-config

  17. Fleet Fleet

  18. O que é? O que é?

  19. O que é? O que é?

  20. cloud-config cloud-config

  21. service unit service unit

  22. Tipos de deployment Tipos de deployment global-unit.service my-app.service my-app@.service Escalável

    Único service Global
  23. Gerenciando serviços Gerenciando serviços $ fleetctl list-unit-files UNIT HASH DSTATE

    STATE TMACHINE goodbye.service d4c61bf launched launched 85c0c595.../172.17.8.102 hello.service e55c0ae launched launched 113f16a7.../172.17.8.103 $ fleetctl list-machines MACHINE IP METADATA 148a18ff-6e95-4cd8-92da-c9de9bb90d5a 10.10.1.1 search_api=true,env=integration 491586a6-508f-4583-a71d-bfc4d146e996 10.10.1.2 search_api=true,env=integration c9de9451-6a6f-1d80-b7e6-46e996bfc4d1 10.10.1.3 search_api=true,env=integration $ fleetctl list-units UNIT MACHINE ACTIVE SUB global-unit.service 148a18ff.../10.10.1.1 active running global-unit.service 491586a6.../10.10.1.2 active running global-unit.service c9de9451.../10.10.1.3 active running
  24. Gerenciando Serviços Gerenciando Serviços $ fleetctl list-units UNIT MACHINE ACTIVE

    SUB global-unit.service 148a18ff.../10.10.1.1 active running global-unit.service 491586a6.../10.10.1.2 active running global-unit.service c9de9451.../10.10.1.3 active running my-app.service 491586a6.../10.10.1.2 active running $ fleetctl start my-app
  25. Gerenciando Serviços Gerenciando Serviços $ fleetctl start my-app@{1..2} $ fleetctl

    list-units UNIT MACHINE ACTIVE SUB global-unit.service 148a18ff.../10.10.1.1 active running global-unit.service 491586a6.../10.10.1.2 active running global-unit.service c9de9451.../10.10.1.3 active running my-app@1.service 491586a6.../10.10.1.2 active running my-app@2.service c9de9451.../10.10.1.3 active running
  26. Mas... e os Mas... e os problemas? problemas? logs split-brain

    etcd monitoração estado dos serviços (qual versão está rodando?)
  27. None
  28. Container para Monitorar containers Log aggregators: Docker 1.8 tem suporte

    para "log drivers" etcd split-brain: MONITORE sempre! não é comum, mas pode acontecer estado dos serviços: monitoração, métricas, autoscaling, alertas
  29. Obrigado! Obrigado! @nirev http://slides.com/nirev <guilherme@nirev.org> jobs@elo7.com jobs@elo7.com Perguntas?