Docker e CoreOS: escalando serviços usando fleet
@nirev
http://slides.com/nirev
<guilherme@nirev.org>
Quem sou eu?
Greyjoy:
time de busca e data science
Guilherme Nogueira
Ex-Desenvolvedor @ Elo7
Greyjoy: Busca e
Data Science
Todos rodando em containers Docker no CoreOS
Por quê?
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
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
Exemplo:
CoreOS
- Boot rápido
- Distro leve
- Apps apenas em containers
- Atualizações on-the-fly
- SystemD
SystemD
cloud-config
Fleet
O que é?
O que é?
cloud-config
service unit
Tipos de deployment
global-unit.service
my-app.service
my-app@.service
Escalável
Único service
Global
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
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
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
Mas... e os problemas?
- logs
- split-brain etcd
- monitoração
- estado dos serviços
(qual versão está rodando?)
Container para Monitorar containers
Log aggregators:
Docker 1.8 tem suporte para "log drivers"
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
monitoração, métricas, autoscaling, alertas
Obrigado!
Perguntas?
@nirev
http://slides.com/nirev
<guilherme@nirev.org>
jobs@elo7.com
Docker e CoreOS: escalando serviços usando fleet (AgileBrazil 2015)
By Guilherme M. Nogueira
Docker e CoreOS: escalando serviços usando fleet (AgileBrazil 2015)
Slides da palestra apresentada na trilha Desenvolvimento e Testes da AgileBrazil 2015, em 22/10/2015.
- 1,948