open source day 2015 - dbaas con docker: un caso di studio

24
#osd2015 DBaaS con Docker: un caso di studio Michelangelo Uberti, Marketing Analyst

Upload: par-tec-spa

Post on 14-Apr-2017

227 views

Category:

Technology


0 download

TRANSCRIPT

#osd2015

DBaaS  con  Docker:  un  caso  di  studio

Michelangelo  Uberti,  Marketing  Analyst

Par-­Tec  e  Red  Hat:  10  anni  di  successi

Par-­Tec è  un  software  &  infrastructure system integrator  che  si  distingue  per:• la  proposizione  al  mercato  di  servizi  professionali  altamente  qualificati  e  soluzioni  innovative• il  rispetto  degli  standard  e  l’adozione  di  tecnologie  open  source

L’avventura  col  cappello  rosso  è  iniziata  10  anni  fa  con  l’adozione  del  GFS,  la  specializzazione  su  RHEL  e  l’evoluzione  verso  il  middleware  e  la  più  recente  Cloud  Infrastructure.

Il  nostro  attuale  rapporto  con  Red  Hat?Red  Hat  Premier  Business  Partner  con  specializzazione  Datacenter  Infrastructure

DB-­as-­a-­Service:  la  semplicità  del  concept

I  macro-­obiettivi  del  progetto

Semplicitàd’uso

Provisioningimmediato

Accesso  via  consoleweb  e  client  TCP

FatturazioneFlat  e  Pay-­per-­use  (to  be)

Orientato  allavendita  massiva

L’idea  del  Cliente  (correva  l’anno  2012…)Offrire  un  servizio  di  database  remoto  che  garantisse:  • accesso  via  internet  mediante  strumenti  e  protocolli  standard• condivisione  multi-­tenant  delle  risorse  computazionali• gestione  dell’infrastruttura  centralizzata

I  possibili  approcci:  Single  vs.  Multi-­instance

Single-­instance1  istanza  :  1  VM

Multi-­instancen istanze  :  1  VM

PRO

• Controllo  completo  di  OS  e  DBMS.• Dimensionamento  puntuale  della  VM.• Estremamente  personalizzabile  dal  

punto  di  vista  applicativo.• Adatto  a  chi  dispone  delle  competenze  

interne.

• Semplicità  di  gestione  da  parte  dell’utilizzatore  finale.  • Nessun  onere  relativo  al  patch  mgmt,  backup,  etc.  • Tempi  e  costi  di  provisioning  ridotti.  • Fruizione  via  web  e  client  SQL  compatibile.  • Fatturazione  Flat  e  (in  futuro)  Pay-­per-­use.  • Orientato  alla  vendita  massiva.

CONTRO

• Inadatta  ad  utenti  privi  di  competenze  sistemistiche.  

• Il  servizio  è  più  esposto  a  rischi  di  sicurezza  legati  alla  gestione  da  parte  dell’utente  finale.  

• Richiede  una  VM  per  ogni  Cliente.

• Inadatto  ad  utenti  che  richiedono  configurazioni  fuori  standard.  

• Inizialmente  non  prevedeva  configurazioni  in  HA  e  replica.

I  possibili  approcci:  perché  non  usare  Trove?

Perché  reinventare  l’acqua  calda  anziché  scegliere  Trove?

• Il  nostro  progetto  è  nato  nell’estate  del  2012,  la  prima  release  pubblica  di  Trove è  stata  rilasciata  in  OpenStack Havana  a  fine  2013

• Trove richiede  OpenStack (you don’t say?)

• Trove è  progettato  per  erogare  database  single-­tenant,  perciò  mantiene  un  rapporto  1:1  tra  machine  instance e  database  instance

Trove  is  Database  as  a  Service  for  OpenStack.  It's  designed  to  run  entirely  on  OpenStack,  with  the  goal  of  allowing  users  to  quickly  and  easily  utilize  the  features  of  a  relational  or  non-­relational  database  without  the  burden  of  handling  complex  administrative  tasks.

”“

Architettura  di  alto  livello

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

Architettura  di  alto  livello

VM

(OS)

Istanza  1

Istanza  2

Istanza  n

Ogni  VM  esegue  un  container  per  ogni   istanza  di  MySQL e  il  nostro  agent  di  mgmt  che  espone  le  interfacce  RESTful  per  l’amministrazione.

Sharedlibraries

MgmtAgent

Istanza  3

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

Architettura  di  alto  livello

Il  Customer Portal consente  all’utente  finale  di:• gestire  il  proprio  contratto• connettersi  al  db da  un’interfaccia  web-­based

L’Admin Portal è  dedicato  alla  gestione  della  piattaforma  da  parte  del  Marketing  e  delle  Operations.

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

Architettura  di  alto  livello

Il  SQL  Proxy consente  all’utente  connettere  i  client  e  le  proprie  applicazioni  mediante  connessione  SQL-­compatibile.

L’obiettivo  del  wrapper  è  filtrare  tutti  i  comandi  amministrativi,  proteggere  l’utente  da  sé  stesso  e  semplificare  il  rilascio  di  nuove  funzionalità.

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

Architettura  di  alto  livello

Il  DWH-­Report è  il  database  centralizzato  che  contiene  i  dati  di  configurazione  e  tutte  le  metriche  di  funzionamento  utilizzabili  ai  fini  della  fatturazione.

Disporre  di  dati  puntuali  è  utile  a  tutti:• il  Marketing  può  progettare  dei  profili  migliori• l’utente  può  verificare  l’adeguatezza  del  profilo  scelto

SAN

Operations  e  MarketingUtente  finale

SQL

SQL

REST

SQL

HTTPS HTTPSCSV  via  SFTP

CUSTOMERPORTAL

ADMINPORTAL BILLING

PLATFORMORCHESTRATOR

DWH  -­ REPORT

DB  HOSTSILVER

DB  HOSTGOLD

DB  HOSTPLATINUM

TCP

Architettura  di  alto  livello

Il  Platform  Orchestrator è  il  punto  di  contatto  tra  i  sistemi  di  provisioning  esterni  e  la  piattaforma.

Trasforma  ogni  richiesta  in  una  serie  di  comandi  per  gli  agent  a  bordo  dei  DB  Host,  istanzia  nuovi  container  e  nuovi  DB  Host.

Focus  sul  Management  Agent

POST /dbaas/v1/instancecreate/{'user': 'mario.rossi','profile': 'gold', 'port': '12345','wwid': 'disk-wwid',}

cgcreate –g memory,blkio,cpu,cpuset:gold…mount /dev/mapper/dbdataXXXp1 /data/mariorossi-1…cgexec mysql_install_db –datadir /data/mariorossi-1…

È  la  componente  che  traduce  dei  comandi  di  alto  livello  in  task  complessi  eseguiti  sui  DB  Host,  ad  es:• Creazione  di  un  nuovo  container• Riconfigurazione  e  dismissione  di  un  container  esistente• Migrazione  e  upgrade  di  profilo• Gestione  del  processo  mysqld (start,  stop,  restart,  etc.)

Orchestration  at  work

Orchestration  at  work

L’utente  acquista  il  profilo  Gold  del  DBaaS  offerto  dal  provider.

Il  suo  contratto  viaggia  all’interno  della  catena  di  delivery.

Orchestration  at  workDBaaS  Platform

La  richiesta  arriva  al  Platform  Orchestrator  della  nostra  piattaforma

Orchestration  at  workDBaaS  Platform

L’Orchestrator  interroga  il  DWH-­Report  per  verificare  la  disponibilità  di  slot  per  il  profilo  Gold

Orchestration  at  workDBaaS  Platform

Oops,  gli  slot  Gold  sono  finiti!

Lancia  una  nuova  VM  di  tipo  Gold,  la  aggiunge  al  pool  di  DB  Host  e  crea  i  nuovi  slot  sul  DWH-­Report

Orchestration  at  workDBaaS  Platform

Gli  slot  Gold  sono  disponibili!

Riserva  uno  slot,  lancia  il  nuovo  container  sul  DB  Host  di  riferimento  e  aggiorna  i  dati  sul  DWH-­Report

Orchestration  at  workDBaaS  Platform

Il  Platform  Orchestrator  completa  il  task  e  restituisce  le  informazioni  alla  catena  di  delivery.

Alla  fine  del  processo  l’utente  riceve  una  mail  con  IP,  porta  e  credenziali  d’accesso.

Da  cgroups  a  Docker

VERSIONE  1 VERSIONE  2

cgroups  +  selinux Docker

La  limitazione  delle  risorse  assegnate  al  processo  mysqld  e  la  separazione  del  contesto  di  sicurezza  era  gestita  mediante  la  configurazione  manuale  di  cgroups  +  selinux.

La  versione  di  MySQL  era  identica  per  tutte  le  istanze  all’interno  della  stessa  VM.

L’istanza  di  MySQL  viene  eseguita  in  un  container  dedicato,  il  quale  gestisce  nativamente  la  limitazione  delle  risorse  e  del  namespace.

Potenzialmente,  ogni  istanza  potrebbe  usare  una  diversa  versione  di  MySQL.

Da  cgroups  a  Docker:  un  esempio  concreto

cgroups  +  selinux Docker

cd /sys/fs/cgroup/memory/gold/echo 1 > memory.oom_controlecho 10 > memory.swappinessecho 1000000000 > memory.limit_in_bytes…chcon -R --reference /template/mariorossi-1 /volume-path…

Docker run …--memory=1g--cgroup-parent=gold--oom-kill-disable=true--memory-swappiness=10--name=mariorossi-1--user=mariorossi-1dbaas-gold …

Le  sfide  principali  (alcune  delle  tante…)

• Gestione  dei  log  delle  istanze  di  database

• Gestione  della  concorrenza  nell’accesso  all’I/O

• Performance  tuning di  Linux  e  MySQL su  istanze  multiple,  es:

Quale  futuro?

VERSIONE  1 VERSIONE  3

cgroups  +  selinux Docker

VERSIONE  2

Whatelse?

Ipotesi  per  la  v3:• Fatturazione  pay-­per-­use• Scelta  della  versione  di  MySQL in  fase  di  provisioning• HA  dei  container,  ad  es.  con  Kubernetes e  Atomic Host• Snapshot autogestiti  per  gestire  eventuali  attività  distruttive  o  backup• Integrazione  con  Trove?

#osd2015

Thank  youMichelangelo  Uberti,  Marketing  Analyst