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