Slide 1

Slide 1 text

Docker e CoreOS: Docker e CoreOS: escalando serviços escalando serviços usando fleet usando fleet @nirev http://slides.com/nirev

Slide 2

Slide 2 text

Quem sou eu? Quem sou eu? Greyjoy: time de busca e data science Guilherme Nogueira Ex-Desenvolvedor @ Elo7

Slide 3

Slide 3 text

Greyjoy: Busca e Greyjoy: Busca e Data Science Data Science Todos rodando em containers Docker no CoreOS

Slide 4

Slide 4 text

Por quê? Por quê?

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Exemplo: Exemplo:

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

CoreOS CoreOS Boot rápido Distro leve Apps apenas em containers Atualizações on-the-fly SystemD

Slide 15

Slide 15 text

SystemD SystemD

Slide 16

Slide 16 text

cloud-config cloud-config

Slide 17

Slide 17 text

Fleet Fleet

Slide 18

Slide 18 text

O que é? O que é?

Slide 19

Slide 19 text

O que é? O que é?

Slide 20

Slide 20 text

cloud-config cloud-config

Slide 21

Slide 21 text

service unit service unit

Slide 22

Slide 22 text

Tipos de deployment Tipos de deployment global-unit.service my-app.service my-app@.service Escalável Único service Global

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Mas... e os Mas... e os problemas? problemas? logs split-brain etcd monitoração estado dos serviços (qual versão está rodando?)

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Obrigado! Obrigado! @nirev http://slides.com/nirev jobs@elo7.com jobs@elo7.com Perguntas?