My Master Degree in Computer Engineering Dissertation about delivering an open source extendible hybrid cloud solution for Platform-as-a-Service with Openshift, integrated in an Infrastructure-as-a-Service deployment with Openstack Grizzly RDO
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli PaaS e IaaS con Openstack ed Openshift
1. Università della Calabria
DIMES
Corso di Laurea Specialistica in Ingegneria Informatica
Un'Infrastruttura di Sviluppo Web Enterprise
Distribuita su Cloud basata su Modelli PaaS e IaaS
Relatori Studente
Prof. Domenico Talia Natale Vinto
Ing. Fabrizio Scarcello 137523
2. Indice
● Obiettivi
● Sviluppo Software nel Cloud
● Hybrid Cloud
● IaaS con Openstack
● Openstack: Orchestrazione delle
risorse
● PaaS con OpenShift
● PaaS over IaaS
● Orchestrazione
● Dashboard Openstack
● Console OpenShift
● Sistemi di High Availability
(HA)
● Sviluppo Web Enterprise PaaS
● Risultati
● Conclusioni
3. Obiettivi
● Offrire una piattaforma di sviluppo per applicazioni
Web Enterprise su Cloud
● Definire un sistema nel quale poter erogare dei
servizi cloud di piattaforma (PaaS)
● Progettare l'architettura di tale sistema basandosi su
un'infrastruttura sottostante interconnessa (IaaS)
● Predisporre il sistema ad interoperabilità e
portabilità su diversi cloud
4. Sviluppo Software nel Cloud
● Rapporto quantitativo
● Scenario Public Cloud
● Rapporto qualitativo
● Livelli logici non necessariamente
interconnessi
Sviluppo Web Enterprise:
si definiscono Web Enterprise tutte le applicazioni coerenti con le logiche di
business online delle organizzazioni che le realizzano
5. Hybrid Cloud
IaaS PaaS
Public Amazon AWS
Microsoft Azure
Joyent
Rackspace
HP Cloud
Google Cloud
Google App Engine
Azure Cloud Services
Heroku
Openshift
AWS Elastic Beanstalk
Private/Hybrid Eucalyptus
VMWare vCloud
OpenNebula
Openstack
CloudFoundry
Openshift
6. IaaS con Openstack
● Open source
● Python
● Multi-hypervisor
– Libvirt: Xen, KVM,
ESX
– Hyper-V
● Metal-as-a-Service
– Ironic
● Orchestration
– Heat
– Juju
● Cloud Services RESTful:
– Nova Compute, Swift
Storage, Neutron
Networking,
Keystone Identity e
Authentication, Heat
8. PaaS con Openshift
● Open source “Origin”
● Ruby
● Cartridge:
– JavaEE, Ruby on Rails,
Python, PHP,Node.js,
MySQL, Mongodb,
DIY
● Gear: RAM + CPU
● Auto scaling dei Gear con Load
Balancer (HAProxy)
● Un nodo Broker ed n Nodi di
computazione
● Build e Deploy con Git e Jenkins
CI
● Sistema DNS per mapping
applicazioni e namespace utenti
● Comunicazione RESTful
9. PaaS over IaaS
● Configurazione Openstack su base
CentOS (RDO) e QEMU/KVM
● Generazione di immagini JeOS
contenenti un sistema operativo di
base a supporto della plaform
– Fedora
– Diskimage-create, Oz,
Vagrant
● Descrizione ed orchestrazione delle
risorse con Heat su base template
compatibile AWS CloudFormation
● Metering e gestione degli eventi
mediante utilizzo di API
compatibili con AWS CloudWatch
11. Istanze Broker/Nodo
● La creazione delle immagini
JeOS avviene per mezzo di
Oz attraverso un sistema di
template che descrive il tipo
di sistema ed i pacchetti da
installare
● I template TDL sono dei file
XML
<template>
<name>F18-x86_64-openshift-origin-
broker-cfntools</name>
<os>
<name>Fedora</name>
<version>18</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>file:/var/lib/libvirt/images/Fedora-
18-x86_64-netinst.iso</iso>
</install>
</os>
<description>
OpenShift Origin Broker
</description>
12. Orchestrazione
● Le immagini vengo aggiunge a
Glance, ed orchestrate con Heat
attraverso un template
compatibile con AWS
CloudFormation
● I template sono file JSON o
YAML compatibili CFN
● Istanza Broker
"BrokerInstance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Fn::FindInMap": [ "JeosImages",
"Broker", "Image" ]
},
"InstanceType": "m1.small",
"KeyName": {
"Ref": "KeyName"
},
..
"puppet module install openshift/openshift_origin",
"n",
"puppet apply --verbose /root/configure.pp | tee
/var/log/configure_openshift.log", "n",
..
15. Sistemi di High Availability (HA)
IaaS
● High Availability di Istanza
● AWS::AutoScaling::ScalingPolicy
– AdjustmentType:
ChangeInCapacity
– ScalingAdjustment: '1'
PaaS
● High Availability di Servizio
● HAProxy
– Load Balancer
– Gear Routing
A=
MTBF
MTBF+MTTR
S=Rb−Ra
ROI=S/CM
Availability
MTBF = tempo medio fra i guasti
MTTR = tempo massimo di
riparazione dei guasti
R rischio, S risparmio
C costo di implementazione
16. Sviluppo Web Enterprise PaaS
Creazione Web App Java EE
Auto scalabile su 3 Gear, con
supporto MySQL
● rhc createapp Esempio
jbossas7 s
● rhc scalecartridge jbossas7 a
Esempio min 1 max 3
● rhc cartridge add mysql5.1 a
Esempio
Sviluppo Web App
● git clone progetto vuoto
● git push files
– Build
– Deploy
● Oppure Jenkins
Webapp su EsempioNamespace.dominio.ext
Cloud Ibrido: Entry DNS per l'accesso pubblico e NAT firewalling su
macchina host Openstack
17. Risultati
● Adozione di due soluzioni di cloud ibrido interconnesse ed
interoperabili per razionalizzazione risorse di Data Center
ed erogazione di servizi di Cloud di piattaforma
● Totale indipendenza dall'hardware e dal sistema di
virtualizzazione
● Implementazione di un doppio sistema di HA fault tolerance
● Predisposizione del sistema a portabilità nel cloud grazie
alle API compatibili con AWS e ad estensione della
platform e dei runtime rispettivamente grazie al concetto di
Gear e di Cartridge
18. Conclusioni e Sviluppi Futuri
● Estensione dell'infrastruttura su più macchine host Openstack
interconnesse
● PEP05: Sistema integrato con l'infrastruttura IaaS sottostante che
permetta alle applicazioni web di sopravvivere anche ai guasti sul
Gear primario contenente HAProxy (integrazione routing table di
Openshift con le API di Neutron)
● Cartridge SQL multiDB
● Orchestrazione di risorse virtualizzate o baremetal con Juju e
definizione di un ambiente di sviluppo di sviluppo Web Enterprise
basato su nodi interconnessi con JVM clusterizzate attraverso
Terracotta, mediante uso di EHCache e BigMemory.