docker e apache mesos infraestrutura e … · agenda » parte 1 contexto linx+neemu+chaordic »...

32
INFRAESTRUTURA E CRIAÇÃO DE APIs EM ALTA ESCALA USANDO DOCKER E APACHE MESOS

Upload: nguyendiep

Post on 21-Jul-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

INFRAESTRUTURA E CRIAÇÃO DE APIs EM ALTA ESCALA USANDO DOCKER E APACHE MESOS

Page 2: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

AGENDA

» Parte 1 Contexto LINX+Neemu+Chaordic

» Parte 2 Stack para publicação de APIs

» APIs em containers (Docker)

» Gerenciamento de clusters (Mesos)

» Orquestração de containers (Marathon)

» Parte 3 Load balancing e Auto scaling

» Parte 4 Monitoramento

» Parte 5 Demo

Page 3: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

SOLUÇÕES DE PERSONALIZAÇÃOE INTELIGÊNCIA PARA

ECOMMERCE

O QUE FAZEMOS?

Page 4: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

ALGUNS DOS NOSSOS CLIENTES

Page 5: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento
Page 6: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

ESCALA

350krequisições/minuto

45Mrecomendações servidasdiariamente

6,5Musuários únicos por dia

140Meventos coletados por dia

Page 7: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

SUA TAREFA SIMPLESDE HOJE:

”DEPLOYAR” API REST.

Page 8: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

EASY LIFE

# app.py

from flask import Flaskapp = Flask(__name__)

@app.route('/')def hello_world(): return 'Hello QConSP 2017!'

if __name__ == '__main__': app.run(debug=True,host='0.0.0.0')

» Clona repositório na máquina prod+ git clone \

https://github.com/repo/app.git

» Instala dependências + pip install -r requirements.txt

» Executa aplicação+ python app.py

Page 9: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

SURGIU OUTRA APIE AGORA?

Page 10: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

DEPLOY DE MÚLTIPLAS APIS

HOST 1 HOST 2 HOST 1

$

Page 11: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MUITAS APIS, MUITAS DEPENDÊNCIAS

E AGORA?

Page 12: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

DOCKER

FROM alpine:latestMAINTAINER platformRUN apk add --update \ python \ python-dev \ py-pip \ build-baseCOPY . /appWORKDIR /appRUN pip install -r requirements.txtENTRYPOINT ["python"]CMD ["app.py"]

» Gera imagem Docker+ docker build -t \

flask-sample-one:latest .

» Cria container a partir da imagem+ docker run -d -p 5000:5000 \

flask-sample-one

Page 13: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

DEZENAS,CENTENAS,MILHARES

DE APISE AGORA?

Page 14: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

HOST 1

HOST 2

HOST 3

MÚLTIPLAS APISMÚLTIPLOS HOSTS

HOST 4

HOST 5

HOST 6

HOST ...

HOST n

Page 15: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

E AGORA?

» Como listar as aplicações?

» Como evitar conflito de portas?

» Quanto de recurso existe nos hosts?

» Como democratizar os deploys?

Page 16: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MESOS

GERENCIAMENTODE CLUSTERS

» Master(s) ↔ Slaves

» Unificação de recurso computacional

» Tasks → (CPU, Memory, Disk)

» Tasks rodam imagens Docker

Page 17: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

ARQUITETURA MESOS

Mesos Slaves

Mesos Masters1execute my-img(cpus, memory)

2 “docker run … my-img”

Page 18: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

E AGORA?

» E se um Mesos Slave morrer?

» Como escalar a aplicação?

» Como mapear container → aplicação?

» Como fazer deploy sem downtime?

Page 19: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MARATHON

ORQUESTRAÇÃODE CONTAINERS

» Mesos como middleware

» Aplicação → Set(containers)

» Replicação configurável

» Load Balancing

» Auto Scaling

Page 20: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

ARQUITETURA MARATHON

Mesos Slaves

Mesos Mastersexecute my-imgwith R replicas

2

3

find resourcesrun my-img

event notifications

4

deploy my-img(cpus, mem, R)

1

Page 21: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MARATHON UI

Page 22: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MEUS CONTAINERS ESTÃO RODANDO

COMO SERVIR REQUISIÇÕES?

Page 23: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

LOAD BALANCING

Mesos Slaves

... DNS

1

app →[(host, port), …]

2reconfigure NGinx

Page 24: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

CARGA/TRÁFEGO OSCILANDO

COMO AJUSTAR O NÚMERO DE

CONTAINERS?

Page 25: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

AUTO SCALING

https://github.com/chaordic/marathon-autoscaling

Mesos Slaves

task → (cpu, memory)2

app → [task hosts…]1

3scale app

Auto Scaling Agent

Page 26: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MONITORAMENTO DAINFRAESTRUTURA

MÁQUINAS - CONTAINERS

Page 27: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MONITORINGGRAFANA + PROMETHEUS + MESOS EXPORTER

Mesos SlavesMesos Masters

host → [metrics...]

Page 28: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MONITORINGGRAFANA + PROMETHEUS + MESOS EXPORTER

Uso / Limite de Memória

Page 29: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

MONITORING

Recursos do Cluster

Page 30: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

LOGGING

» Docker Log Driver + Fluentd

» Logs em /logs/{registry}/{image}/{tag}/ em cada slave

» Roadmap: enviar logs para Graylog

Page 31: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

que tal umademo?

Page 32: DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic » Parte 2 Stack para publicação de APIs » APIs em containers (Docker) » Gerenciamento

+++

+++

OBRIGADO!Flávio [email protected]

Vitor [email protected]