DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic »...

Post on 21-Jul-2018

218 views 0 download

Transcript of DOCKER E APACHE MESOS INFRAESTRUTURA E … · AGENDA » Parte 1 Contexto LINX+Neemu+Chaordic »...

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

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

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

ECOMMERCE

O QUE FAZEMOS?

ALGUNS DOS NOSSOS CLIENTES

ESCALA

350krequisições/minuto

45Mrecomendações servidasdiariamente

6,5Musuários únicos por dia

140Meventos coletados por dia

SUA TAREFA SIMPLESDE HOJE:

”DEPLOYAR” API REST.

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

SURGIU OUTRA APIE AGORA?

DEPLOY DE MÚLTIPLAS APIS

HOST 1 HOST 2 HOST 1

$

MUITAS APIS, MUITAS DEPENDÊNCIAS

E AGORA?

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

DEZENAS,CENTENAS,MILHARES

DE APISE AGORA?

HOST 1

HOST 2

HOST 3

MÚLTIPLAS APISMÚLTIPLOS HOSTS

HOST 4

HOST 5

HOST 6

HOST ...

HOST n

E AGORA?

» Como listar as aplicações?

» Como evitar conflito de portas?

» Quanto de recurso existe nos hosts?

» Como democratizar os deploys?

MESOS

GERENCIAMENTODE CLUSTERS

» Master(s) ↔ Slaves

» Unificação de recurso computacional

» Tasks → (CPU, Memory, Disk)

» Tasks rodam imagens Docker

ARQUITETURA MESOS

Mesos Slaves

Mesos Masters1execute my-img(cpus, memory)

2 “docker run … my-img”

E AGORA?

» E se um Mesos Slave morrer?

» Como escalar a aplicação?

» Como mapear container → aplicação?

» Como fazer deploy sem downtime?

MARATHON

ORQUESTRAÇÃODE CONTAINERS

» Mesos como middleware

» Aplicação → Set(containers)

» Replicação configurável

» Load Balancing

» Auto Scaling

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

MARATHON UI

MEUS CONTAINERS ESTÃO RODANDO

COMO SERVIR REQUISIÇÕES?

LOAD BALANCING

Mesos Slaves

... DNS

1

app →[(host, port), …]

2reconfigure NGinx

CARGA/TRÁFEGO OSCILANDO

COMO AJUSTAR O NÚMERO DE

CONTAINERS?

AUTO SCALING

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

Mesos Slaves

task → (cpu, memory)2

app → [task hosts…]1

3scale app

Auto Scaling Agent

MONITORAMENTO DAINFRAESTRUTURA

MÁQUINAS - CONTAINERS

MONITORINGGRAFANA + PROMETHEUS + MESOS EXPORTER

Mesos SlavesMesos Masters

host → [metrics...]

MONITORINGGRAFANA + PROMETHEUS + MESOS EXPORTER

Uso / Limite de Memória

MONITORING

Recursos do Cluster

LOGGING

» Docker Log Driver + Fluentd

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

» Roadmap: enviar logs para Graylog

que tal umademo?

+++

+++

OBRIGADO!Flávio Santosbarata@chaordic.com.br

Vitor Avancinivitor.avancini@chaordic.com.br