LXC Linux Containers

LXC - Linux Container

LXC – Linux Container

LXC è una nuova tecnologia per il controllo degli userspace attraverso i Linux Containers, un meccanismo leggerissimo e sicuro per avere un sistema virtuale.

LXC è un’evoluzione di chroot per implementare sistemi completi virtuali, con l’aggiunta di meccanismi di gestione avanzate delle risorse attraverso cgroup e che offre un avanzato grado di isolamento sia di sistema che di applicazione.

I containers Linux adottano un approccio completamente diverso rispetto alle tecnologie di virtualizzazione come Xen e KVM.

E’ possibile virtualizzare solamente macchine linux su linux. Le macchine virtualizzate condividono con il sistema ospitante il kernel con un sistema molto efficiente di isolamento e di sicurezza, e come si può ben capire molto molto efficiente in termini di risorse utilizzate. Con questo sistema si è in grado di supportare simultaneamente centinaia di sistemi emulati su un singolo server. Le macchine virtuali non avranno nessuna perdita di prestazioni rispetto alla macchina che ospita il tutto.

E non è tutto! Il bello sta nella facilità di installazione e di gestione delle macchine virtuali. Non necessita di nessuna modifica al kernel. E’ possibile comprimere una intera macchina virtuale e clonarla in pochi secondi, impressionante direi…

INSTALLAZIONE

Da terminale diventate Root e installate i pacchetti necessari.

sudo -s
apt-get install lxc debootstrap bridge-utils

# creiamo un container
root@lxc:~# lxc-create -n ubuntu01 -t ubuntu
Checking cache download in /var/cache/lxc/trusty/rootfs-i386 …
Installing packages in template: ssh,vim,language-pack-en,language-pack-it
Downloading ubuntu trusty minimal …
……..
………
dopo molte molte righe dovreste ottenere qualcosa come questo :
##
# The default user is ‘ubuntu’ with password ‘ubuntu’!
# Use the ‘sudo’ command to run tasks as root in the container.
##

ora possiamo verificare se e quali container vengono effettivamente visti dal sistema :

root@lxc:~# lxc-ls 
ubuntu01

adesso non rimane che far partire il nostro nuovo container tramite il comando :

root@lxc:~# lxc-start -n ubuntu01 -d

se non ci sono errori la shell non dovrebbe restituirvi altro che il cursore per andare avanti e poterci ora collegare alla console del container :

root@lxc:~# lxc-console -n ubuntu01

ora ci verra’ presentata una schermata di login in cui entrare con le credenziali sopra indicate in fase d’installazione :

Ubuntu 14.04.1 LTS ubuntu01 tty1

ubuntu01 login: ubuntu
Password: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic i686)
ubuntu@ubuntu01:~$

 …da qui in avanti le possibilita’ di utilizzo sono quasi infinite e dipendono dall’uso che meglio si adatta alle vostre esigenze, vi rimando quindi alle guide ufficiali del progetto:
lxc_container

Il valore della certificazione per Linux OpenStack

RedHat Enterprise OpenStack Platform

RedHat Enterprise OpenStack Platform

Openstack è sempre più un punto di riferimento per chi intraprende un percorso di trasformazione del data center verso il mondo cloud. Mentre si parla di cloud oramai da anni, sono oltre la metà, sul totale delle aziende di media grandezza e con infrastruttura complessa, a non avere implementato il cloud computing se non in modo parziale o solo ricorrendo a risorse di cloud pubblico all’occorrenza. Nel tempo sta emergendo con chiarezza il bisogno di interoperabilità e di supporto aperto, a un livello superiore rispetto all’etereogeneità delle infrastrutture dei diversi vendor, tanto che l’84 percento delle aziende con progetti cloud decida di fare il deploying di OpenStack.

A fronte di questo grande interesse RedHat collabora in modo intenso con molti fornitori di soluzioni di gestione come BMC e HP i quali, come membri del Red Hat OpenStack Cloud Infrastructure Partner Network, hanno fornito informazioni, feedback e supporto per la creazione delle nuove certificazioni sulla piattaforma OpenStack.

RedHat introduce la certificazione Cloud Management per RedHat Enterprise Linux OpenStack come parte del Red Hat OpenStack Cloud Infrastructure Partner Network. Il progetto OpenStack, nato come sistema Iaas e piattaforma per il cloud computing open abilita l’interoperabilità tra le piattaforme cloud. RedHat propone un percorso formativo per consentire alle soluzioni di cloud management dei partner di interoperare e di gestire la piattaforma Red Hat Enterprise Linux OpenStack. I clienti certificati sulla piattaforma RedHat Enterprise Linux OpenStack sono in grado cosi’ di implementare soluzioni di management testate con la certezza che siano supportate congiuntamente da Red Hat e dalle aziende partecipanti.

I corsi prevedono diversi livelli d’interazione, potendo cosi trovare quello che piu’ si adatta ad ogni esigenza di tempo, soldi ed impegno da profondere, questo in quanto esistono in pratica queste categorie :

  • CL210 RedHat OpenStack Administrator (Corso in Aula)
  • CL210VT RedHat OpenStack Administrator (Virtual Training)
  • CL210R RedHat OpenStack Administrator-ROLE (e-learning) 

Per ogni altra informazione inerente ai corsi ed ai relativi esami vi rimando alla pagina ufficiale:
redhat.com_training_dates

 

Canonical ed il Cloud in scatola

The Ubuntu OrangeBox

The Ubuntu OrangeBox

Ubuntu mette il cloud in una scatola

Canonical avra’ anche fatto dietro front sulle infrastrutture “Cloud Remote”, cio’ non toglie che l’azienda continui ad essere impegnata nel pensare e programmare nuove tecnologie in tale campo. Canonical non rinuncia a tentare la strada del computing nelle nuvole. L’ultima creazione è un cluster chiavi-in-mano utile per creare e testare un cloud migrante. Tutto in salsa Ubuntu.

L’ultima novità in tal senso si chiama The Orange Box, un cluster x86portatile” che Canonical descrive come un modo facile e “a basso rischio” per installare un infrastruttura Cloud OpenStack in un contesto aziendale: magari per testare il gran balzo verso il cloud eterodiretto vero e proprio.
Il cluster The Orange Box contiene 10 nodi, ciascuno dei quali comprendenti una CPU quad-core Intel i5-3427U CPU (e GPU Intel HD4000 integrata), 16 gigabyte di RAM, 120GB di storage, NIC Gigabit Intel. La dotazione software include Ubuntu 14.04 LTS a 64-bit, MAAS (Metal As A Service) e JuJu. Il prezzo del nuovo gingillo cloud (13.000 dollari)garantisce ovviamente l’accesso al supporto avanzato Ubuntu per un anno, così come sono inclusi un case utile a trasportare il cluster in aereo (peso totale di 32 chilogrammi con accessori), monitor, mouse, tastiera e antenna WiFi.

Introduzione a CouchDB

couchDBCouchDB e’ un database documentale NoSQL disponibile con l’ampia licenza Apache.
Apache CouchDB e’ un moderno documentale richiamabile semplicemente con l’HTTP e che al tempo stesso offre le piu’ avanzate funzionalita’ di replicazione dati e di ricerca in parallelo (Map/Reduce).

CouchDB (acronimo di Cluster Of Unreliable Commodity Hardware) e’ uno dei piu’ diffusi DB documentali Web grazie alla sua velocita’, alla flessibilita, alla semplicita’ di utilizzo ed al… prezzo!

Installazione

Installare CouchDB e cURL (che serve per accedere) e’ facile su Linux (eg. RedHat, Fedora, CentOS, Scientific Linux, …):

yum install couchdb curl -y
oppure
sudo aptitude install couchdb curl
Ora bisogna far partire il server CouchDB con il comando couchdb. Per verificare se funziona tutto basta un comando:
# curl http://127.0.0.1:5984
{“couchdb”:”Welcome”,”uuid”:”fd91d8b7b77c7f6d75d5937326a95ad2″,”version”:”1.5.0″,”vendor”:{“version”:”14.04″,”name”:”Ubuntu”}}

CouchDB e’ disponibile per tutti i sistemi UNIX-based ed anche sulle piattaforme MS-Windows e Mac OS X. Installare le versioni precedenti di CouchDB non era cosi’ semplice: bisognava partire dall’installazione del linguaggio di programmazione Erlang e ricompilare…

Utilizzo

CouchDB e’ accessibile esclusivamente attraverso un HTTP-based RESTful API, cio’ significa che, anziche’ collegarsi al DB server utilizzando un’applicazione client per interagire con il sistema, basta utilizzare un software in grado di interagire con un HTTP server web per fare richieste. CouchDB che a sua volta eseguira’ le azioni nel database, restituendo una risposta appropriata quando finito.
Quindi e’ possibile gestire il database semplicemente visitando gli URL nel browser web oppure utilizzando gli strumenti da riga di comando come curl o, cosa piu’ importante, attraverso qualsiasi linguaggio di programmazione che supporta richieste HTTP.
L’implementazione dell’interfaccia REST (Representational Transfer State) su CouchDB e’ molto completa poiche’ non si limita al CRUD (CREATE, READ, UPDATE, DELETE) ma ogni operazione svolta su CouchDB e’ richiamabile con l’HTTP.

Futon

CouchDB possiede una sua interfaccia web molto user friendly, Futon, dalla quale e’ possibile eseguire qualsiasi operazione per la gestione di un database, come l’inserimento, la visualizzazione, la modifica e la cancellazione dei dati. Inoltre Futon contiene anche le principali funzionalita’ di amministrazione di un database, come le impostazioni di configurazione, la replicazione dei dati, definizione dei ruoli e privilegi e uno strumento di testing.
Per accedere all’interfaccia web basta collegarsi da browser a localhost:5984/_utils

cURL

Per i piu’ affezionati alla linea di comando (come me per esempio), si puo’ usare curl, un ottimo tool utile per trasferire dati da/a un server utilizzando vari protocolli, tra cui HTTP, HTTPS, FTP. Il modo per farlo e’ digitando:

curl <opzioni> <ip_host>:5984/<database>/<record>.

Da notare che nel URL viene specificata la porta 5984, e’ quella usata dal processo di couchdb.
Tra le opzioni piu’ importanti: -X per specificare il tipo di richiesta http: GET per richiedere dati, PUT e POST per modificare dati o DELETE per cancellare. Inoltre -d permette di specificare i dati da includere nella richiesta, ad esempio per modificare documenti nel database.
Esempi:

# Crea il database "libri"
curl -X PUT http://127.0.0.1:5984/libri

# Visualizza il contenuto di "libri" (all'inizio e' vuoto)
curl -X GET http://127.0.0.1:5984/libri

# Crea il documento con _id "lafineeilmioinizio" dentro il database "libri"
curl -X PUT http://127.0.0.1:5984/libri/lafineeilmioinizio \
 -d '{"titolo":"La fine e il mio inizio", "autore":"Tiziano Terzani", 
      "casa_editrice":"Longanesi", "prezzo":"18.60"}'

# NB: Tutte le volte che un documento viene modificato riceve un revision number
# Modifica un documento aggiungendo come allegato un'immagine
curl -X PUT http://127.0.0.1:5984/libri/lafineeilmioinizio/cover.jpg?rev=1-XXX \
 --data-binary @images/budda.jpg -H "Content-Type: image/jpg"

# Crea un documento hungergames copiando il contenuto da un altro documento
curl -X COPY http://127.0.0.1:5984/libri/lafineeilmioinizio -H "Destination: hungergames"

# Cancella il documento con _id "hungergames"
curl -X DELETE http://127.0.0.1:5984/libri/hungergames?rev=1-YYY 

# Effettua un caricamento massivo di documenti da file
curl -X POST http://127.0.0.1:5984/libri/_bulk_docs -H "Content-type: application/json" -d @biblio.json

# Visualizza tutto il contenuto del database "libri" e il dettaglio dei documenti presenti
curl -X GET http://127.0.0.1:5984/libri/_all_docs?include_docs=true

Architettura

CouchDB e’ un database document-oriented. Cio’ significa che a differenza dei piu’ tradizionali DBMS (Database Management System) relazionali come Oracle e PostgreSQL, i dati non vengono memorizzati in tabelle (o se volete, relazioni), ma in “documenti”.

Su un database relazionale le tabelle hanno una struttura rigida, sono composte da campi definiti prima della effettiva memorizzazione dei dati. Le tabelle vanno dichiarate con gli opportuni statement DDL, prima di essere utilizzate. Ogni tabella e’ composta da tuple (ovvero le righe della tabella o i record) che contengono i dati. La gestione dei dati si effettua con statement DML. I comandi DDL e DML della stragrande maggioranza dei DB relazionali sono in SQL. Ora dimentichiamoci tutto questo…

In CouchDB il concetto di relazione o di tabella non esiste, l’elemento fondamentale e’ il documento che contiene al suo interno tutti i dati relativi, organizzati in modo eterogeneo. Si possono aggiungere e modificare i campi anche dopo l’effettivo inserimento dei dati. In questo modo record appartenenti alla stessa categoria di informazioni possono avere campi diversi tra di loro. La chiave primaria dei database relazionali viene tradotta nel campo univoco _id di CouchDB, creato automaticamente dall’engine del DBMS (ma che e’ anche possibile indicare in modo esplicito.

Dal punto di vista del sistema operativo CouchDB si presenta come un unico processo beam.smp in ascolto sulla porta TCP 5984 (6984 se e’ abilitato l’HTTPS). In realta’ all’interno del processo operano diversi thread con compiti specifici.
I file utilizzati da CouchDB su Linux si trovano in /etc/couchdb, i file di database su /var/lib/couchdb, i log su /var/log/couchdb.

Consistenza dei dati e replicazione

CouchDB non utilizza alcun meccanismo di locking ma sfrutta l’MVCC (Multiversion Concurrency Control), ogni modifica di un oggetto ne crea una nuova versione. Le versioni precedenti non vengono cancellate. Se due modifiche vanno in conflitto poiche’ accedono allo stesso documento, la seconda riceve un errore in save. L’applicazione deve riprendere l’ultima versione del documento e rieseguire l’UPDATE.
L’isolamento e’ mantenuto solo a livello di un singolo documento, questa e’ una notevole semplificazione, rispetto alla complessa logica transazionale di altri database, ma consente l’ottimizzazione, la parallelizzazione e la distribuzione dei dati in modo semplice. A livello di accesso al file di dati ogni singola modifica ad un documento rispetta le proprieta ACID (Atomic Consistent Isolated Durable) con la serializzazione delle modifiche sui documenti e la scrittura sincrona sul disco.

Piu’ database CouchDB possono essere collegati tra loro in modo molto semplice. I database vengono aggiornati tra loro con una replicazione peer-to-peer incrementale implementata nativamente nell’engine. CouchDB permette una replicazione bidirezionale asincrona, utilizza un meccanismo automatico di risoluzione dei conflitti e fornisce una eventual consistency tra i database. Se i database sono ospitati su nodi differenti si ottiene con questo la distribuzione dei dati.
La replicazione di CouchDB puo’ essere utilizzata sia per sincronizzare database locali che per complesse configurazioni con sharding dei dati.

 

Wireshark Network Analyzer

wiresharkCos’e’ Wireshark 

E’ un network analyzer, tra i piu’ potenti, ossia e’ un software che permette l’analisi dei pacchetti che transitano in rete, con lo scopo di analizzarli e capire cosa sta succedendo sul nostro PC . E’ fornito di una serie di tool che rendono piu’ “dinamiche” l’analisi per poter cosi’ capire cosa c’e’ che non va nella nostra rete.

Wireshark ci permette di capire approfonditamente quali e quanti pacchetti ci sono in transito nella rete e tramite i molti tool a disposizione si potranno individuare i fenomeni che disturbano la nostra navigazione, permettendoci cosi’ anche di capire cosa fanno i computer vicino a noi.

Passato e futuro [ Ethereal & Wireshark] 

Ethereal e’ il nome originale di questo progetto ma la separazione tra gli sviluppatori originali ha contribuito alla nascita nel 2006 di Wireshark decretando poco dopo la fine del progetto Ethereal che attualmente non viene piu’ sviluppato.

Sniffer vs Network Analyzer 

Uno sniffer e’ un software che intercetta pacchetti transitanti in rete e li correla con il preciso intento di ricavarne dettagliate informazioni quali (password, dati , ed ogni sorta di credenziali…) [ dsniff, ettercap ].

Un network analyzer e’ un software che intercetta pacchetti in rete e li presenta all’operatore in una forma che possa facilitarne l’analisi (human-readable form) [ wireshark, tcpdump ].

Normal vs promiscuous 
Nel normal mode l’interfaccia di rete processa solo i pacchetti diretti a lei (modo di funzionamento standard).
In promiscuous mode l’interfaccia processa anche gli altri pacchetti (sniffa) e li passa al kernel,in pratica sniffer e network analyzer lavorano tutti in promiscuous mode.

Non e’ compito di questo articolo spiegare come adoperare Wireshark il quale, come spiegato, e’ un prodotto molto avanzato e ricco di tools; per fortuna internet e’ zeppa di documentazioni ufficiali e non che dettagliano al meglio le mille funzioni. Quello che spero e di aver destato in voi la voglia di essere piu’ curiosi possibile su cio’ che passa dal vostro PC, i mezzi per saperlo ci sono quindi siate curiosi e ricordatevi sempre che :
” il sapere e’ potere “.