OpenStack – Introduzione

OpenStack Cloud Software

OPENSTACK – PARTE PRIMA

Si parla molto di OpenStack e delle sue applicazioni. Ma che cos’è davvero, perché è stato sviluppato e quali sono i suoi vantaggi?

Che cos’è?
OpenStack è un sistema operativo per il cloud computing in grado di controllare componenti di storage, networking e computing. È open source e gratuito, di solito è installato sotto forma di soluzione IaaS. OpenStack fornisce un insieme di strumenti che servono a costruire e gestire piattaforme cloud sia pubbliche sia private. Permette agli utenti di installare macchine virtuali e si può accedere al codice sorgente per modificarlo in qualsiasi modo sia utile per gli scopi specifici del progetto.

Chi lo ha sviluppato?
Nel 2010 Rackspace e la NASA hanno collaborato a un progetto congiunto che è poi diventato OpenStack. Il codice iniziale è stato usato per Nebula, la piattaforma cloud della NASA, poi il progetto si è dato l’obiettivo più ampio di aiutare le aziende a far girare software cloud su hardware standard.

Chi lo usa?
Tra i vendor, alcuni dei nomi più importanti che attualmente supportano e distribuiscono OpenStack sono Canonical, Cisco, EMC, HP, Huawei, IBM, Oracle, Google e Red Hat. Tra gli utenti attuali ci sono Bloomberg, Comcast, PayPal e Wells Fargo. Ci sono incontri internazionali periodici su OpenStack – gli OpenStack Summit – in tutto il mondo, che raccolgono programmatori e utenti della piattaforma.

E’ quindi ormai innegabile l’interesse che tutto il mondo IT ha riservato in questi ultimi anni ad OpenStack.

Qual’è la ragione di tutto questo?

L’ormai tradizionale paradigma client-server, in progetti in cui la scalabilità e le finestre di picchi di carico sono variabili essenziali all’interno dell’equazione della produttività, presenta oggi giorno evidenti limiti di gestione dei carichi e della velocita’ di evoluzione dei progetti. Ecco quindi nascere l’esigenza di uno strumento che fosse flessibile ed allo stesso momento affidabile.

Questo concetto spiega quindi le motivazioni che possono spingere ad adottare una piattaforma cloud, ma perché fra tutte le piattaforme esistenti si parla sempre di OpenStack?

OpenStack è un progetto aperto
La sua natura aperta ha fatto sì che tutti i vendor interessati all’introduzione di specifiche funzionalità o determinati ambiti potessero contribuire in maniera attiva e funzionale al progetto, innescando un circolo virtuoso in cui ogni miglioramento apportato per favorire se stessi va a beneficio della comunità.

La sua natura aperta fa sì che chi adotta OpenStack per il proprio ambiente cloud è di fatto esente dal cosiddetto vendor lock-in, ossia l’essere vincolato ad un rivenditore specifico per le proprie tecnologie. Infatti se lo standard OpenStack è garantito, ogni venditore potrà essere valutato in modo paritetico a tutti gli altri, rendendo così il mercato più competitivo e conveniente per il cliente finale.

I presupposti di un progetto OpenStack

Bisogna subito tenere presente che “non tutti i progetti sono adatti al cloud“, nonostante cio che viene erroneamente interpretato leggendo in giro per il web, infatti questo principio sfugge a molti che guardano verso le nuvole vedono unicamente un posto differente da cui erogare i propri servizi. Esistono dei requisiti da tenere presente per capire se un progetto è adatto al cloud.

Un progetto OpenStack quindi deve essere:

** Non persistente: non deve basarsi sulla persistenza dei dati all’interno delle macchine coinvolte. Questo aspetto non va confuso con l’esigenza di avere uno storage solido e sicuro, si tratta invece di non giudicare le istanze che concorrono al progetto come perenni, ma come componenti utili al loro scopo e liberamente sacrificabili;

** Scalabile: deve supportare applicazioni che nativamente siano in grado di scalare. L’applicazione nasce già dallo sviluppo come pensata per il cloud;

** Dinamico: a fronte di un innalzamento delle richieste ricevute il progetto deve essere in grado in maniera autonoma di gestire le nuove componenti. Gli interventi manuali successivi all’implementazione sulle istanze coinvolte devono essere inesistenti;

** Rapido: deve essere passibile di provisioning, favorendo la velocità di creazione (e distruzione) di nuove istanze;

Se il vostro progetto risponde a questi requisiti messi in evidenza qui sopra, allora potete pensare ad integrare OpenStack ed è giunto quindi il momento di capire in cosa consiste.

Le componenti di OpenStack

La parola stack descrive un insieme di entità che concorrono ad uno scopo comune. OpenStack è composto da numerose elementi che devono comunicare fra loro, lo strato di comunicazione passa attraverso due filoni fondamentali: la memorizzazione delle informazioni e la coda delle azioni da svolgere. Queste due azioni sono coperte ciascuna da un elemento specifico:

MySQL

Il database MySQL è necessario per la memorizzazione delle informazioni di configurazione generali del sistema, per la memorizzazione delle informazioni di autenticazione relative a ciascun componente e per il mantenimento dinamico dello stato del sistema.
Ogni azione eseguita all’interno dell’infrastruttura OpenStack è tracciata all’interno del database. L’importanza di questa componente è evidentemente capitale.

RabbitMQ

RabbitMQ è uno scheduler, un software didicato alla gestione delle code ed all’organizzazione delle sequenze di operazioni. Tutti i nodi facenti parte dell’infrastruttura OpenStack comunicano con lo scheduler, ed anche in questo caso è presto spiegato come questa componente ricopra enorme importanza per il regolare funzionamento dell’ambiente.

Determinato quindi il sistema di circolazione e reperimento delle informazioni si può focalizzare l’attenzione sugli elementi peculiari di OpenStack, riassunti in questo diagramma che si trova sul sito ufficiale del progetto:

OpenStack Diagramma Software

                                                     OpenStack Diagramma Software

Keystone

Keystone è il software che gestisce il sistema di autenticazione di OpenStack. Il principio su cui si fonda è quello classico degli utenti e dei gruppi, ma di fatto si occupa di gestire le tre tipologie di utenti configurabili in OpenStack:

  • Cloud Provider Admins: ossia gli amministratori del sistema OpenStack;
  • Tenants: ossia i profili delle compagnie fruitrici dei servizi;
  • Users: ossia gli utenti delle compagnie fruitrici dei servizi;

Il concetto di “compagnia” si riferisce ad un sotto-ambiente interno alla stessa installazione di OpenStack. Applicato ad un provider esso potrebbe essere rappresentato dai clienti, mentre all’interno di un cloud privato potrebbe essere associato ad un dipartimento interno.

Glance

Glance si occupa del provisioning (ossia di fornire) delle immagini all’interno dell’ambiente. Questa componente fornisce un bacino di istanze gia preconfigurate, disponibili ai fruitori dei servizi, per effettuare il deploy (ossia la messa in produzione) dell’istanza desiderata all’interno del proprio ambiente.
Le immagini sono supportate nei formati KVM qcow, Aws, VMWare purché esista su queste un Master Boot Record.

Nova

Nova è il compute service, un servizio che permette di gestire i sistemi virtuali erogati all’interno dell’ambiente. All’interno della macchina definita controller il servizio nova-api guiderà l’avvio e la terminazione delle istanze comandando la sua controparte nova-compute, attiva su tutte le macchine hypervisor facenti parte della struttura OpenStack.
Le decisioni su dove e come le istanze dovranno essere avviata saranno gestite dal servizio nova-compute-service (basato su libvirt).

Horizon

Horizon è l’interfaccia web dalla quale è possibile controllare agevolmente le istanze in modalità point-and-click oltre che le immagini gestite da Glance. Il software Horizon è basato sul modulo wsgi del webserver Apache.

C’è ancora un’ultimo aspetto da tenere presente, come è deducibile dallo schema, lo storage.
In un setup base le macchine possono essere erogate direttamente dai dischi degli hypervisor, ma in ambienti di larga scala ciò potrebbe non essere auspicabile. In questi casi fare riferimento ad un gestore dello spazio centralizzato permetterebbe di utilizzare gli hypervisor come semplici erogatori, valorizzando la scalabilità generale del progetto, ed ecco dunque venirci in aiuto questo componente per la gestione dei volumi, Cinder.

Cinder

In origine parte del progetto Nova (chiamato nova-volume) e dal 2012 progetto a se stante, Cinder è il servizio che fornisce il block storage per le istanze, uno storage gestito e centralizzato che funziona da dispositivo a blocchi per le virtual machines. Le macchine virtuali risiedono quindi su un device dedicato, definito sulla base di quello che è la modalità con cui l’hypervisor ha accesso allo storage.
Cinder supporta diverse modalità per essere visto dagli hypervisors: è possibile infatti utilizzare dischi locali o sistemi storage esterni, quali NFS, FibreChannel, DRBD o iSCSI.

Swift

A differenza di Cinder, Swift è un servizio di storage online che si occupa di rendere disponibile spazio all’interno dell’ambiente OpenStack mediante la modalità object storage. I dati non vengono registrati direttamente su dispositivi a blocchi, ma preventivamente convertiti in oggetti binari, distribuiti all’interno di più device in modo da garantirne la massima accessibilità oltre che la replica.
Swift è compatibile con il servizio di storage Amazon S3 e funziona con lo stesso principio: fornire uno storage web accessibile e scalabile.

Conclusioni

In questa lunga introduzione sono stati illustrati filosofia, componenti e soprattutto potenzialità di OpenStack, ma sebbene la lettura possa essere apparsa lunga, questa tocca appena la superficie dell’universo relativo a questo grande progetto.
Nel prossimo articolo verrà avviato un piccolo studio di fattibilità vero e proprio con lo scopo di mettere su strada tutti i vari software che lo compongono ed iniziare cosi ad adoperare OpenStack.

Mesosphere e la scalabilità dei Data Center

Mesos(sphere) Data Center scalabili

Mesos(sphere) Data Center scalabili

Mesosphere , per chi ancora non la conoscesse, è una startup con sede a San Francisco che si è concentrata sullo sviluppo di un sistema operativo per garantire la scalabilità di un Data Center attraverso il componente open source Apache Mesos, nato dalle viscere della UC Berkeley e già adottato e riadattato nell’uso da giganti del calibro di Twitter, eBay e Airbnb ed anche Apple, che ha ricostruito il progetto SIRI proprio sulla piattaforma tecnologica di Mesos.

L’obiettivo di Mesosphere è semplice, ossia rendere Mesos e le tecnologie a esso affini adatte all’uso anche nelle piccole enterprise, cioè in tutte quelle realtà che non possono permettersi un esercito di ingegneri pronti a prototipare e mettere in produzione un sistema proprietario. In questo modo, anche le piccole realtà potrebbero godere dei vantaggi di cui gode Google, tanto per citarne uno (a caso), che ha sviluppato la tecnologia proprietaria BORG, ossia un substrato software capace di orchestrare le applicazioni, suddividendone l’esecuzione fra tutte le risorse disponibili nei data center globali dell’azienda.

Per capire meglio come funziona BORG e come funziona Mesosphere, basti pensare a tutti i servizi che Google mette a disposizione della propria utenza, come Google Search, Gmail, Google Maps, YouTube e via discorrendo. Mountain View ha organizzato tutte queste applicazioni in modo che condividessero i workload fra tutte le risorse di tutti i data center della società, evitando di assemblare dei cluster separati di server per ogni servizio. [Elementi fondamentali, i workload, nella progettazione del moderno ambiente IT, infatti un buon design dei workload serve per permettere alle applicazioni di essere eseguite con maggior efficienza].

Cosi come il segreto della scalabilità dei servizi di Google sembra risiedere in BORG, Mesosphere punta alla scalabilita’ dei Data Center e, lavora per offrire un sistema operativo per Data Center anche a chi non ha le opportunità di investimento al pari di Mountain View.

Il nome di questo sistema operativo e’ DCOS, ossia Data Center Operating System, il quale è capace di astrarre CPU, memoria, storage e altre risorse computazionali dai server fisici, per riunirli in una piattaforma di gestione unica e facilmente scalabile. Secondo Mesosphere, questo sistema operativo, attualmente in fase beta, permette agli amministratori IT di scalare i cluster data center aggiungendo fino a 50 mila server.

La base del DCOS è un insieme di strumenti open source di cui molti disponibili via Apache Licenses. Questi tools giacciono su un sistema kernel distribuito, che offre le API necessarie alla gestione e all’organizzazione delle applicazioni distribuite. Fra i componenti del nuovo sistema operativo per il cloud computing ci sono un init system distribuito (Marathon), un pianificatore di attività distribuito (Chronos) e un service discovery (DNS). L’architettura supporta già ed è compatibile con Apache Spark, Apache Cassandra, Kafka, Hadoop, YARN, HDFS e Google Kubernetes.

La flessibilità del nuovo sistema operativo di Mesosphere è comprovatadalla capacità di supportare tutte le versioni Linux più recenti delle distribuzioni CoreOS, CentOS, Ubuntu e Red Hat e, dalla possibilita’ di poter essere eseguito su bare metal o in un ambiente di private cloud virtualizzato su alcuni dei più importanti cloud provider come AWS, Google Compute Engine, Digital Ocean, Microsoft Azure, Rackspace e VMware vCloud Air e, dal supporto ad altri strumenti di gestione data center come OpenStack, Docker, Cloud Stack e VMware vCenter Orchestrator.

La crescita di Mesosphere è garantita da una serie di finanziamenti per startup, di cui l’ultimo ricevuto è pari a 10 milioni di dollari. Il nuovo finanziamento, permetterà quindi a Mesosphere di uscire dalla fase beta e proporre DCOS in due differenti versioni, una a pagamento offerta con supporto tecnico e servizio di consulenza e una gratuita per la community.

 

#MesosilnuvoSystemperDataCeter

Le novita’ di Debian 8

Debian 8 Jessie

Debian 8 Jessie

Il 25 aprile 2015 è stato annunciato il rilascio di Debian 8 (alias Jessie), che e’ l’ultima versione di uno dei più noti ed apprezzati sistemi operativi basati su Linux. Questo rilascio, atteso da moltissimi utenti e da altrettante aziende, porta con sè alcune novità significative, frutto di un lavoro di sviluppo durato circa due anni, e culminato in un sistema operativo che sarà supportato fino al 2020.

In questo articolo vedremo le principali novità introdotte su Debian 8, di cui è possibile effettuare il download direttamente dal sito ufficiale del progetto.

Una distribuzione universale
Debian, ad oggi vanta una vasta gamma di pacchetti software (circa 43 mila), che consentono a chiunque di personalizzarla a proprio piacimento, in base al tipo di applicazione per cui questo sistema sarà utilizzato: dai server alle workstation, passando per il cloud, i mainframe o le board che implentano l’Internet of Things.

L’idea della distribuzione universale, adatta a tanti contesti, ha spinto negli anni la comunità open source a creare un gran numero di derivate (ed il caso più noto risponde al nome di Ubuntu). Il fatto che molti sistemi Linux si basino su Debian aumenta quindi l’importanza di ogni aggiornamento apportato a questa distribuzione in ogni rilascio, dal momento che ciò si ripercuote su tutte le sue derivate (ufficiali e non).

Il passaggio a systemd
La novità più significativa, che ha creato molti dibattiti accesi, introdotta con Debian 8, riguarda il passaggio definitivo a systemd quale sistema di init principale, sebbene sia possibile utilizzare sysvinit come alternativa. Tale scelta trova le sue motivazioni nella riduzione dei tempi di avvio ed arresto del sistema, sebbene non tutti gli utenti sembrano convinti di ciò. Inoltre, systemd non si occupa solo della fase di boot: in quanto gestore di sistema, esso incorpora anche la gestione di diverse altre funzioni (alimentazione, dispositivi, login, eccetera), con conseguenze che potrebbero comportare, ad esempio, la necessità di riavviare il sistema in caso di aggiornamento. Un problema significativo per una distribuzione server, dovuto proprio a systemd. Il problema piu’ grande sorge per via del fatto che oggettivamente, l’attuale sistema usato, SysVInit, è oggettivamente un sistema antiquato, con un elenco di noti difetti, il principale dei quali è sicuramente la grande lentezza derivante dall’approccio seriale all’avvio dei servizi. L’idea di sostituirlo con un prodotto più moderno e meglio ingegnerizzato è, quindi, tutt’altro che sbagliata.

Il problema reale è che systemd sta andando ben oltre questo encomiabile tentativo, ma sta fagocitando al suo interno tutta una serie di servizi che con la gestione dei processi e la creazione dello ‘spazio utente’ poco hanno a che fare. Approccio, questo, che viola radicalmente le logiche della filosofia Unix, che sono alla base non solo dei Linux che usiamo oggi, ma in larga parte di quella che è l’informatica moderna.

Va detto, però, che il passaggio a systemd era già in atto da tempo, e non soltanto sulle distribuzioni basate su Debian: anche Red Hat, Fedora e SUSE (per citare alcune grandi distribuzioni Linux) sono già passate a questo nuovo gestore.

Desktop e applicazioni
Dal punto di vista dell’interfaccia utente, il grande grado di personalizzazione offerto da Debian si traduce nella possibilità di scegliere il proprio desktop environment preferito tra un gran numero di possibilità. L’ultimo rilascio è infatti compatibile con GNOME 3.14, KDE Plasma 4.11.13, Xfce 4.10, MATE 1.8 e Cinnamon 2.2.16.

Ai sopra citati desktop environment si aggiungono anche diverse applicazioni, tra cui Iceweasel 31.6, GIMP 2.8.14 e LibreOffice 4.3.3 per la sfera desktop, Apache 2.4.10, Tomcat 7.0.56 e 8.0.14, MariaDB 10.0.16 e MySQL 5.5.42 per quella server, nonchè OpenJDK 7u75, PHP 5.6.7 e Python 2.7.9 e 3.4.2 per gli sviluppatori.

Altre novità
Per concludere ricordiamo che Debian 8 è basato sul kernel Linux 3.16.7, che garantisce la compatibilità con le più recenti tecnologie disponibili. È altresì interessante notare che, con il nuovo rilascio, viene garantito il supporto a ben dieci architetture diverse, tra cui x86, PowerPC, MIPS, ARM e diverse altre.

 

#DebianottoJessie

Shellshock Bug verifichiamo il nostro sistema

Shellshock Bug

Shellshock Bug

I ricercatori di Red Hat hanno recentemente segnalato un particolare bug denominato “Shellshock” presente nella Shell che potrebbe mettere in serio pericolo milioni di sistemi Linux. A quanto pare questo bug potrebbe essere utilizzato da utenti malintenzionati per poter operare sul sistema operativo.

Shellshock pare sia un exploit molto più pericoloso di Heartbleed, che avrebbe potuto mettere letteralmente in ginocchio la maggioranza dei web server esistenti, perché permette di prendere il pieno controllo della macchina, non importa quale, ed eseguire del codice (ottenendo tutti i permessi d’amministrazione).

Cos’è e come funziona Shellshock?  In pratica, è una vulnerabilità del terminale, che gli utenti di Windows conoscono meglio come Prompt dei comandi,  che espone all’attacco una serie di servizi, da Apache al DHCP dei router ecc… Se la versione di BASH installata è afflitta dal bug, un malintenzionato potrebbe eseguire da remoto una serie d’operazioni, che spaziano dai comandi CGI ai demoni avviati in automatico dal sistema operativo. Significa che, senza una patch ad hoc chiunque potrebbe prendere possesso dei server.

Non è però ben chiaro come questi possano accederne dato che effettuare modifiche nel sistema, installazione di software ecc vengono richiesti i permessi di root. Da notare inoltre che Red Hat e le principali distribuzioni Linux hanno già risolto il bug, basterà quindi aggiornare la distribuzione o server Linux per risolvere questo problema.

Possiamo facilmente verificare se il nostro sistema operativo è o meno  “infetto” da Shellshock.

Basta semplicemente avviare il terminale e digitare:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

se avremo come risultato:

vulnerable
this is a test

vuol dire che nel nostro sistema è presente il bug Shellshock in bash

se invece abbiamo come risultato

this is a test

possiamo star tranquilli.

Per risolvere il problema bastera’ semplicemente aggiornare la Bash digitando da terminale:

Per Debian, Ubuntu e derivate:

sudo apt-get update
sudo apt-get install bash

Per Fedora, CentOS, Red Hat e derivate:

sudo yum install bash

Per openSUSE e derivate:

sudo zypper install bash

Per Arch Linux e derivate, Chakra, Manjaro ecc:

sudo pacman -Sy bash

Al termine bastera’ rilanciare il comando di verifica, ed ecco risolto il problema di Shellshock.

 

#ShellshockBugVerifichiamo

Couchbase = CouchDB + Membase

Couchbase NoSQL

Couchbase NoSQL

Scopriamo perche’ grandi aziende come Ebay,PayPal, LinkedIn, Viber hanno scelto Couchbase.
Stupiscono le sue incredibili performance e di quanto sia piu’ veloce di MongoDB e Cassandra .

Innanzitutto
Il mondo informatico e’ come non mai in continuo fermento ed evoluzione, questi continui cambiamenti a volte sono difficili da seguire ma, spesso portano novita’ interessanti come Couchbase NoSQL. Ma di cosa si tratta ??
Nel variegato mondo dei database NoSQL da qualche tempo c’è una novità: CouchDB e Membase, insieme alle relative società, si sono unite, dando luogo a un unico prodotto e una sola azienda, entrambi chiamati Couchbase.

#Couchbase = CouchDB + Membase
Quest’ultimo unisce le caratteristiche salienti dei predecessori da cui trae origine, ereditando lo storage ad oggetti su disco di CouchDB e le capacità di caching in memoria di Membase.
Interessante e’ anche la possibilità di utilizzare la stessa tecnologia anche su piattaforme mobili, ottenendo con il minimo sforzo la sincronizzazione dei dati fra il dispositivo mobile e il data center grazie alla tecnologia di sincronizzazione dei dati tipica di CouchDB.

In questo primo articolo vedremo i passi necessari per l’installazione di CouchBase su piattaforma Linux-Ubuntu .

PS: l’installazione di un sistema di questo tipi non e’ per PC casalignhi infatti le richieste minime sono nell’ordine di:
Minimum number of processors required : 4 cores
Minimum RAM required  : 4 GB

Innanzitutto, occorre scaricare la versione piu’ appropriata al vostro sistema operativo, a questo link. Io ho scelto la “couchbase-server-enterprise_3.0.2-ubuntu12.04_amd64.deb”
Quindi lanciare il seguente comando :

# sudo dpkg -i couchbase-server-enterprise_3.0.2-ubuntu12.04_amd64.deb

ed al termine dell’installazione, verificare che tutto e’ andato correttamente, digitando nel browser, questo link

http://127.0.0.1:8091/

e seguite la procedura di Setup……, una volta ultimata il primo login come Amministratori sara’ automatico e vi ritroverete direttamente all’interno della console di gestione del DB. Complimenti  il primo step e’ stato ultimato con successo.

Se durante l’installazione non avete cambiato nulla avrete notato che i file di gestione/configurazione del DB sono stati salvati in /opt/couchbase/………/ – Per fare lo shutdown e lo startup, digitare questi comandi

# sudo /etc/init.d/couchbase-server start
# sudo /etc/init.d/couchbase-server stop

Per ogni ulteriore dettaglio nella configurazione per ora vi rimando alla documentazione ufficiale che potete trovare a questo LINK .

Per il momento e’ tutto, spero che queste poche righe abbiano destato l’interesse verso una soluzione DB ad alte prestazioni interessante qual’e’ CouchBase.
Bis Bald, a presto!