Virtualització

Sovint, les empreses instal·len un servidor per cada servei a oferir. Aquesta és la opció més fàcil i segura, i garanteix una bona qualitat de servei. Podem trobar empreses que disposen d’un servidor específic per a l’allotjament web, que està en espera la gran part del dia i té un temps d’ús del 5-10%. I el mateix passa amb el servidor de correu, el de la base de dades…

Des de fa uns anys moltes empreses han utilitzat solucions de virtualització per millorar el rendiment del seu maquinari, a banda d’altres avantatges d’aquesta tecnologia, com per exemple l’alta disponibilitat.

La virtualització consisteix a crear amb un programa específic una capa d’abstracció sobre una màquina física perquè els seus recursos puguin ser compartits i utilitzats per múltiples usuaris. Es poden virtualitzar servidors, sistemes d’emmagatzematge, connexions de xarxa, estacions de treball, aplicacions i sistemes operatius.

Inicis de la virtualització

En els últims anys s’ha potenciat molt la virtualització a les empreses a causa dels nombrosos avantatges que ofereix. No obstant això, no es tracta de cap tecnologia nova, ja que en els anys 60 ja s’utilitzaven solucions d’aquest tipus. En aquell moment les empreses disposaven d’un únic supercomputador i virtualitzaven el sistema per tal que cada treballador pogués treballar amb una part d’aquest com si es tractés d’un ordinador independent.

No obstant això, l’ús principal de la virtualització és la creació de múltiples ordinadors o servidors completament independents, coneguts com a màquines virtuals, en un sol ordinador físic. Tot i que les màquines treballen de forma independent, comparteixen els mateixos recursos de maquinari (processador, memòria, disc dur i interfícies de xarxa). Això és possible gràcies a l’hipervisor, també anomenat monitor de les màquines virtuals o VMM (de l’anglès Virtual Machine Monitor), que és el programa que arbitra i gestiona dinàmicament aquests recursos entre totes les màquines virtuals.

Objectius de la virtualització

Enumerem a continuació alguns dels principals avantatges i objectius de les empreses que utilitzen la virtualització:

  • Millorar els índexs d’utilització del maquinari: avui podem trobar molts servidors que tenen índexs d’utilització del 10 o el 15%. Això suposa una inutilització dels sistemes i, per tant, una pèrdua de diners en la inversió realitzada. Aplicant tècniques de virtualització podem oferir més d’un servei en una mateixa màquina física. D’aquesta manera aconseguirem índexs d’utilització d’un 70 o 90% i aconseguim fer més eficients les inversions realitzades.
  • Problemes d’espai en els centres de processament de dades: en els últims anys ha augmentat molt el volum de dades digitals que han de tractar les empreses, ja que molts processos que abans eren manuals i es feien en paper ara estan digitalitzats. Altrament, també han augmentat els serveis de què disposen: servidors de pàgines web, intranets, correu electrònic… i, sovint, les sales de servidors havien estat dimensionades per a una altra realitat. Unificant processos gràcies la virtualització es poden pal·liar aquests problemes d’espai i evitar haver de fer reformes o crear nous CPD, ja que són molt costosos.
  • Reduir costos en el subministrament elèctric: cada cop les empreses destinen més diners al subministrament elèctric a causa de l’increment de les tarifes i sobretot de l’increment del nombre d’aparells electrònics. Amb la virtualització es pot reduir el nombre de servidors físics i, per tant, la despesa en energia, contribuint a la conservació del medi ambient, moviment que en anglès s’anomena green IT.
  • Reduir costos d’operació: els ordinadors no són autònoms del tot, necessiten ser monitorats, actualitzats, reparats i revisats pel personal tècnic de l’empresa. La virtualització ajuda a reduir els costos en aquestes operacions.
  • Afegir flexibilitat i escalabilitat: les empreses canvien i ho fan molt ràpid. D’altra banda, els sistemes d’informació sovint són rígids i és difícil adaptar-los a les noves necessitats de l’empresa. Amb la virtualització, aquests canvis son molt més ràpids i els problemes d’escalabilitat desapareixen.
  • Pla de recuperació en cas de desastre: una de les millors solucions en cas de desastre és disposar d’un centre de processament de dades secundari que pugui entrar en funcionament quan es produeixi una caiguda en el servei. No obstant això, aquesta solució és molt costosa i poc eficient, ja que si no es produeix cap caiguda el centre secundari estarà infrautilitzat. Algunes empreses sense tants recursos veuen en la virtualització una solució, ja que permet restaurar, crear o transferir màquines virtuals i continuar amb l’activitat de negoci en pocs minuts.
  • Compatibilitat d’aplicacions: sovint, quan es realitzen actualitzacions en els sistemes, algunes aplicacions una mica antigues poden deixar de funcionar, ja que no estan pensades per treballar amb un sistema operatiu tan modern. Això pot suposar un problema en el funcionament de l’empresa ja que sovint es tracta d’aplicacions pròpies que van costar molts diners i que encara funcionen correctament. Amb la virtualització podem simular màquines més antigues per tal que aquestes aplicacions puguin continuar executant-se.
  • Entorn de proves: abans de donar per vàlid un programa, els desenvolupadors necessiten executar-lo en un entorn el més semblant possible al servidor de producció. Per contra, s’ha de tenir present que en tractar-se d’un programa en fase de desenvolupament pot ser que encara no estigui prou depurat i que pugui produir algun problema en el funcionament del sistema. Per aquest motiu les proves es realitzen en un entorn controlat. La virtualització permet proveir un entorn de proves econòmic, que es pot restaurar de forma ràpida en cas de fallada sense interrompre el funcionament del sistema productiu.

Virtualització de servidors

La virtualització de servidors consisteix en la creació de màquines virtuals amb el seu propi sistema operatiu que funcionen com si es tractessin de servidors totalment independents. D’aquesta manera, en un únic servidor físic es poden allotjar diferents servidors virtuals, els quals poden funcionar amb diferents sistemes operatius. Dins de la virtualització de servidors podem trobar diferents tècniques: la virtualització nativa, la virtualització allotjada i la paravirtualització.

Virtualització nativa

L’hipervisor s’executa directament en el maquinari físic per controlar l’assignació de recursos i memòria entre les diferents màquines virtuals, a més de proporcionar una interfície per a l’administració a alt nivell i eines per monitorar. Tal com s’observa en la figura, les màquines virtuals s’executen de manera simultània en un nivell superior.

Figura Estructura d’un sistema de virtualització natiu

L’hipervisor s’executa en l’anell 0 de la CPU i, per tant, els sistemes operatius de les màquines virtuals hauran d’estar modificats i utilitzar anells superiors. Això complica la virtualització nativa, ja que la majoria del sistemes operatius estan dissenyats perquè s’ubiquin en l’anell 0, perquè hi ha algunes tasques que només es poden realitzar en aquest nivell, com per exemple l’execució d’instruccions amb privilegis a la CPU o l’accés directe a la memòria.

D’altra banda, depenent de l’arquitectura, l’hipervisor pot disposar o no dels controladors necessaris per a la gestió dels recursos de maquinari o bé pot ser el mateix sistema operatiu de la màquina virtual el que els té prèviament instal·lats. En la figura podem observar aquestes dues situacions.

Figura Arquitectura dels hipervisors

Com que l’hipervisor té accés directe al maquinari, sempre oferirà un millor rendiment que la virtualització allotjada, ja que utilitza menys recursos.

Alguns exemples de virtualització nativa són VMware ESXi, VMware ESX, Xen, Citrix XenServer i Microsoft Hyper-V Server.

Virtualització allotjada

En la virtualització allotjada, l’hipervisor s’executa sobre un sistema operatiu convencional per després virtualitzar diferents sistemes operatius. En aquesta arquitectura, l’hipervisor proporciona a cada màquina virtual tots els recursos de la màquina física, incloent una BIOS virtual i una memòria virtual. Aquesta situació fa que el sistema allotjat tingui la sensació que s’està executant directament en la màquina física en lloc d’en una màquina virtual dins d’una aplicació.

En la figura podem observar l’estructura d’un sistema de virtualització allotjada.

Figura Estructura d’un sistema de virtualització allotjada

La virtualització se situa en una capa més allunyada del programari que en la virtualització nativa, fet que afecta al rendiment de l’hipervisor.

Alguns exemples de virtualització allotjada són VirtualBox, VMware Workstation, VMware Server, VMware Player, QEMU, Microsoft Virtual PC i Microsoft Virtual Server.

Paravirtualització

En la paravirtualització, l’hipervisor està allotjat sobre el maquinari de la màquina física, és a dir que es tracta d’un sistema de virtualització nativa. Tal com es fa en la virtualització nativa, les màquines virtuals es creen sobre l’hipervisor, que és específic i més simple que els de virtualització nativa, ja que en la paravirtualització les màquines virtuals disposen de privilegis que els permeten accedir directament a alguns recursos de la màquina física.

Que les màquines virtuals puguin accedir directament a alguns recursos del sistema té com a objectiu millorar el temps d’execució, ja que algunes tasques són molt més difícils d’executar si es realitzen des d’un entorn virtualitzat que si es realitzen directament en la màquina nativa. Els sistemes operatius utilitzats en les màquines virtuals d’un sistema de paravirtualització han de ser creats específicament per a aquesta utilitzat.

Per exemple, Xen ofereix una solució d’aquest tipus en la qual el rendiment de les màquines virtuals només es veu afectat entre un 2 i un 8% respecte del que obtindrien si estiguessin funcionant directament en la màquina física. Aquest projecte s’anomena XenWindowsGplPv.

Virtualització d'escriptoris

Els servidors no són els únics dispositius que es poden beneficiar dels avantatges de la virtualització en una empresa. També es poden virtualitzar els escriptoris, els sistemes d’emmagatzematge, aplicacions i xarxes.

La majoria d’empreses i organitzacions disposen de multitud de dispositius. En moltes companyies gairebé cada treballador disposa d’un ordinador, a part d’altres dispositius d’accés al sistema com ordinadors portàtils o dispositius mòbils. La gestió d’aquest volum de dispositius genera una càrrega de feina molt gran per al personal informàtic de l’empresa, ja que ha de realitzar tasques de manteniment, còpies de seguretat de les dades i actualitzar el sistemes operatius, els antivirus, les aplicacions o els pedaços de seguretat de cadascun d’aquests dispositius. No fer-ho podria causar grans problemes de seguretat. Per solucionar aquests problemes, les empreses comencen a implantar solucions de virtualització d’escriptoris.

La virtualització d’escriptoris trenca amb la concepció que l’escriptori són tots els programes i les dades ubicats en una màquina física, i el defineix com el conjunt d’aplicacions i dades amb què un usuari treballa, independentment del dispositiu amb què hi accedeixi.

Quan els usuaris treballen en un escriptori virtual, tots els programes i dades estan emmagatzemats en un servidor compartit on s’emmagatzemen i executen de manera centralitzada. Això permet als usuaris accedir als seus escriptoris des de qualsevol dispositiu, com un ordinador, un portàtil, un telèfon intel·ligent o un client lleuger. Sovint s’acostuma a utilitzar aquesta última opció, ja que els clients lleugers són més econòmics i fiables que els ordinadors convencionals, perquè en no disposar de discos d’emmagatzematge local redueixen la probabilitat de fallar.

En aquest tipus de virtualització és necessària una bona connexió entre el servidor i els clients. Si aquesta connexió és deficient, pot provocar problemes en el rendiment del sistema. S’ha desenvolupat una variant de virtualització d’escriptoris anomenada Check In Check Out en què els clients descarreguen a l’inici de la sessió el seu sistema i hi treballen en local sense necessitat de connectar-se constantment al servidor. Al final de la sessió tornen a fer un bolcat de l’escriptori al servidor principal, cosa que deixar el dispositiu utilitzat completament net. S’acostuma a utilitzar aquesta variant en connexions poc fiables, com per exemple connexions d’usuaris que treballen des de casa o que estan de viatge.

En les primeres solucions de virtualització d’escriptoris es creava en el servidor una imatge de disc per a cada usuari de l’empresa. Això suposava un gran volum de dades emmagatzemades en el disc del servidor, la qual cosa podia provocar problemes d’espai. En canvi, avui en dia s’emmagatzema una única imatge que es pot clonar per a cada usuari i només s’emmagatzemen de manera separada les configuracions personals. Quan un usuari acaba la sessió, totes les dades i modificacions de configuració es tornen a emmagatzemar en el servidor i no queda cap informació en el dispositiu.

La virtualització d’escriptoris ofereix molts avantatges a les empreses:

  • Augment de la seguretat: els usuaris executen un escriptori virtual ubicat en el centre de processament de dades. D’aquesta manera, els usuaris finals no poden ni instal·lar ni modificar el programari del seu escriptori. Són els administradors els encarregats de definir un perfil per a cada tipus de treballador i d’assignar-los únicament aquelles aplicacions que necessiten. Així, els administradors poden gestionar de manera centralitzada els escriptoris en comptes de fer-ho físicament, assegurant que els usuaris no puguin modificar res del sistema operatiu i que a més es realitzen totes les actualitzacions de seguretat i d’antivirus.
  • Seguretat de les dades: les dades estan centralitzades en el servidor de l’empresa, la qual cosa impedeix als usuaris treballar amb fitxers ubicats en el seu disc local. Això facilita la realització de còpies de seguretat i garanteix que tota la informació compleix la normativa de seguretat de l’empresa. A més, evita que es puguin produir fuites o malversacions de dades confidencials. Amb la virtualització d’escriptoris és més difícil poder extreure documents de la empresa i, en cas de pèrdua o robatori d’un ordinador portàtil, no s’haurà de patir pel seu contingut, ja que no contindrà cap informació compromesa.
  • Reducció de costos: la virtualització d’escriptoris permet reduir costos de manteniment per part del personal d’informàtica, ja que es podran mantenir tots els ordinadors de la empresa de manera centralitzada, sense necessitat de desplaçar-se físicament. D’altra banda, també permet reduir costos en maquinari. Com que les aplicacions s’executen en el servidor. no es necessiten estacions de treball d’última tecnologia. Sovint, amb un client lleuger (més barat que un ordinador convencional) connectat al servidor n’hi haurà prou. A més, la vida útil d’aquest tipus de dispositius és del voltant d’uns sis anys, mentre que la d’un ordinador normal és de tres.
  • Respecte al medi ambient: en centralitzar tots els càlculs en el servidor, el consum elèctric dels clients lleugers és molt inferior que si s’executessin les aplicacions de forma distribuïda. És calcula que pot suposar un estalvi energètic d’entre el 50 i el 90%.
  • Continuïtat de negoci: la virtualització d’escriptoris és una solució senzilla i eficient a implantar en un pla de recuperació en cas de desastre. Les empreses que disposen d’aquesta tecnologia podran continuar la seva activitat des de qualsevol dispositiu que tingui connexió amb el servidor.
  • Reducció del temps d’inactivitat: en cas de fallada del maquinari o el programari, en pocs minuts es pot restaurar l’escriptori i continuar treballant amb el que s’estava fent en el mateix dispositiu o des d’un altre, la qual cosa redueix de manera significativa el temps d’inactivitat dels usuaris finals.
  • Millora de la productivitat: en tractar-se d’escriptoris restringits, els treballadors no poden instal·lar programari no permès. D’aquesta manera es pot garantir que els usuaris només tenen accés a les aplicacions autoritzades per la empresa i que, per tant, dediquen tot el seu temps a la feina, sense distraccions que puguin reduir la seva productivitat.
  • Escalabilitat: la virtualització d’escriptoris facilita gestionar el creixement d’una empresa i, en definitiva, l’escalabilitat dels seus sistemes. Quan un nou treballador entra a l’empresa, en pocs minuts pot disposar d’un escriptori amb totes les aplicacions necessàries.

Tot i el gran ventall d’avantatges que ofereix la virtualització d’escriptoris, encara són poques les empreses que han optat per implantar solucions d’aquest tipus. En canvi la majoria d’empreses s’han beneficiat dels avantatges de la virtualització de servidors ja que són solucions que aporten molts avantatges, relativament fàcils d’implantar, no requereixen una gran inversió i ofereixen beneficis immediats.

A la llarga, implantar solucions de virtualització d’escriptoris suposarà una reducció de costos per a l’empresa (manteniment, consum elèctric, vida útil dels dispositius). No obstant això, en el moment de la implantació s’ha de fer una inversió econòmica important en l’estructura de xarxa i servidors. A part, suposa canviar la filosofia de treball i el funcionament de tota l’empresa. Per tant, no es tracta únicament d’un canvi en el departament de sistemes, sinó que cal implicar tota la organització.

Virtualització d'aplicacions

A diferència de la virtualització d’escriptoris remots, en la virtualització d’aplicacions no es recrea totalment un ordinador, sinó que es virtualitza només una aplicació en concret. En aquest cas, cal interpretar la virtualització d’aplicacions com la separació dels llocs on s’executa l’aplicació i on es mostren les dades al usuari. Les aplicacions estan allotjades en el servidor principal, on s’executen a petició dels usuaris a través d’un terminal client. Dins de la virtualització d’aplicacions existeix una variant en què les aplicacions no s’executen en el servidor, sinó que es descarreguen i s’instal·len en el client cada cop que s’han d’utilitzar.

Aquest sistema pot semblar repetitiu, però permet als administradors controlar millor les aplicacions, assegurar-se que tots els usuaris utilitzen la última versió i que disposen dels pedaços de seguretat instal·lats. Aquesta tècnica s’acostuma a utilitzar en organitzacions amb molts usuaris que han d’utilitzar diferents aplicacions, com per exemple els estudiants d’una universitat.

Eines per a la virtualització

Actualment existeixen eines per virtualitzar tant de pagament com gratuïtes. És important seleccionar el producte que més s’adeqüi a les nostres necessitats i que sigui compatible amb el programari a utilitzar.

Sistemes propietaris

A continuació es detallen els principals fabricants d’eines de virtualització.

  • VMware: és la empresa líder del mercat de la virtualització. És la que porta més anys dedicant-se aquesta tecnologia i controla una gran part del mercat. La clau del seu èxit és oferir un bon producte i un excel·lent servei de suport. No obstant això, en els últims anys són moltes les empreses que ofereixen tecnologies similars a un preu més baix o fins i tot gratuïtament. Disposa d’un gran ventall de productes destinats a oferir solucions específiques a cada necessitat. La majoria d’ells són de pagament, tot i que també ofereix alguns productes de forma gratuïta.
    • Virtualització de centres de processament de dades: VMware vSphere, Go, vCloud, ESX Server
    • Virtualització d’escriptoris: VMware View, ThinApp, ACE, Workstation, Zimbra, MVP (Mobile Virtualization Platform) i Horizon
    • Virtualització d’aplicacions: família de productes VMware vFabric
    • Productes de seguretat: família de productes VMware vShield
    • Sistemes de gestió: família de productes VMware vCenter (gestió d’aplicacions, infraestructures i operacions)
    • Productes per a MAC: VMware Fusion
    • Productes gratuïts:VMware vSphere Hypervisor, Server, Player i ESXi
  • Microsoft: empresa líder en el terreny dels sistemes operatius, va entrar en el món de la virtualització més tard, però ho ha fet amb empenta i s’ha guanyat un lloc en el mercat. A diferència de Vmware, Microsoft ha orientat els seus productes a les petites i mitjanes empreses, i es calcula que l’any 2012 Microsoft controlava al voltant del 85% del mercat de la virtualització en aquest sector. A més, Microsoft disposa d’un sistema operatiu propi i pot oferir una solució completa. Per acabar, el seu sistema operatiu Windows 8 inclou per defecte l’Hyper-V. A continuació s’enumeren els principals productes de virtualització de Microsoft.
    • Virtualització de servidors: Hyper-V a Windows Server 2008 R2
    • Virtualització per a la creació de núvols privats: Microsoft Dynamic Data Center Toolkit i Windows Azure
    • Virtualització d’aplicacions: Microsoft Application Virtualization
    • Virtualització d’escriptoris: Microsoft Enterprise Desktop Virtualization i Microsoft Virtual Desktop Virtualization
  • Citrix: empresa multinacional fundada l’any 1989, subministra programari de virtualització de servidors, escriptoris, aplicacions i xarxa. Des del juny de 2009, el seu producte de virtualització de servidors anomenat XenServer pot ser descarregat de forma gratuïta des del seu web.
    • Virtualització de servidors: XenServer
    • Virtualització d’escriptoris remots: XenDesktop, XenClient, VDI-in-a-Box i XenReceiver.
    • Virtualització d’aplicacions: XenApp
    • Gestió de les màquines virtuals: NetScaler

Sistemes lliures

De mica en mica, han anat sorgint solucions de virtualització de distribució lliure. Algunes d’aquestes versions gratuïtes són més limitades que les seves versions de pagament, no obstant això, n’hi ha molta varietat i s’hi troben eines força completes, especialment les dissenyades per ser utilitzades en entorns Linux.

Sovint, les grans empreses opten per solucions empresarials, ja que ofereixen un millor suport, és més fàcil trobar-ne documentació i estan més esteses. Les eines de virtualització lliures es destinen majoritàriament a entorns de proves o a l’aprenentatge.

Gràcies a l’aparició d’aquestes eines de virtualització gratuïtes, s’ha pogut apropar la virtualització a tots tipus d’usuaris.

  • VMware: és la empresa líder en el mercat, i tot i que les seves solucions acostumen a ser de pagament, ha llançat al mercat alguns productes de distribució lliure:
    • VMware Server:és una eina dissenyada per ser utilitzada tant a Windows com a Linux. És fàcil d’utilitzar i serveix perquè les empreses s’iniciïn en el món de la virtualització de servidors, optimitzant la utilització dels seus dispositius. Tot i que encara s’utilitza, a finals de 2011 VMware va anunciar que deixava de donar suport tècnic a aquest producte i que llançava altres eines de virtualització més específiques.
    • VMware vSphere: evolució del VMware Server, és un producte fàcil d’utilitzar, pensat perquè les empreses s’iniciïn en la virtualització de servidors de manera gratuïta en pocs minuts. Pot executar fins a 100 màquines virtuals i centralitzar-ne la gestió.
    • VMware Player: es tracta d’un petit programari de virtualització que permet reproduir màquines virtuals ja creades. És una manera ben senzilla d’entrar en el món de la virtualització a nivell d’usuari.
    • VirtualBox: eina de virtualització amb llicència GNU/GPL d’Oracle per a professionals i per a ús domèstic que permet disposar de més d’un sistema operatiu en un mateix ordinador. Ara mateix existeixen versions de VirtualBox per als principals sistemes operatius (Windows, Linux, Mac i Solaris) i s’hi poden virtualitzar un gran nombre de sistemes operatius: Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7, DOS/Windows 3.x, Linux (2.4 i 2.6), Solaris, OpenSolaris, OS/2 i OpenBSD.
  • Virtual PC: programa gestor de virtualització desenvolupat per Connectix i posteriorment adquirit per Windows. És una eina similar a VirtualBox amb la qual els usuaris poden disposar de més d’un sistema operatiu en un ordinador. Pot ser instal·lat en la majoria de versions del sistema operatiu Windows (7, Vista, XP, Server 2003, Server 2008) i pot allotjar els sistemes operatius següents: Server 2003 i 2008, NT, Vista, XP, 2000, OS/2, Me, MS-DOS, 98 6.22, 3.1, 3.11, 2.03, 1.01.
  • QEMU: és un emulador d’arquitectures basades en x86 amb dos modes de funcionament: emulació del sistema complet i emulació en mode usuari.
    • Mode complet: emula un equip sencer, incloent-hi múltiples processadors i perifèrics. Aquest mode s’utilitza per executar sistemes operatius complets. En les últimes versions, el programa accepta fins a 15 arquitectures diferents.
    • Mode usuari: el programa pot executar aplicacions compilades per a un processador concret en un sistema que funciona sobre un processador diferent. Pot servir per solucionar problemes d’incompatibilitat entre arquitectures de 32 i 64 bits.
  • KVM (Kernel Virtual Machine): solució de virtualització completa en què s’utilitza el nucli de Linux com a hipervisor, de manera que tant el control dels dispositius com la planificació de les tasques i la gestió de la memòria del sistema les realitza el nucli, en anglès kernel. En aquest model, les màquines virtuals no deixen de ser un simple procés en el sistema.
  • Linux-Vserver: sistema de virtualització a nivell de sistema operatiu que s’implementa com una sèrie de modificacions del nucli de Linux. Proporciona les eines necessàries per crear múltiples entorns d’usuari independents entre ells. Com que aquesta tecnologia no està lligada a cap arquitectura concreta, pot executar-se en microprocessadors (x86, x86-64, PowerPC, ARM…).
  • Xen: solució de paravirtualització i que, per tant, compta amb un hipervisor que s’executa en el nivell més privilegiat de la màquina i que s’encarrega bàsicament de la planificació de tasques i de la gestió de la memòria. Tot i que sovint s’utilitza en entorns Linux, Xen no és un sistema de virtualització lligat al nucli de Linux, sinó que també pot ser utilitzat en versions modificades de NetBSD, Solaris, FreeBSD i Plan9.

Maquinari específic per virtualitzar

Es poden implementar solucions de vitualització en qualsevol servidor. Ara bé, això no vol dir que tots siguin iguals pel que fa a la virtualització; els seus rendiments poden variar considerablement. Per treure el millor partit a aquesta tecnologia, alguns proveïdors de components de maquinari ofereixen solucions orientades a la virtualització. Els dos proveïdors que més han despuntat en aquest camp són Hewlett-Packard i Dell.

  • Hewlett-Packard: la gama de servidors ProLiant ofereix un gran ventall de solucions de virtualització amb diversos proveïdors: VMware, Citrix, Microsoft, Linux i Solaris. Amb VMware porten més de 10 anys treballant conjuntament. Són considerats líders en aquest sector gràcies a la gran integració entre els dos productes, que ofereix un excel·lent rendiment i un ús eficient de l’emmagatzematge, i evita problemes d’escalabilitat. Entre d’altres, ofereixen solucions per a la virtualització de servidors, escriptoris i fins i tot solucions en núvol.
  • Dell: ha dissenyat la família de servidors PowerEdge per obtenir el millor rendiment possible en virtualització. Ha optimitzat alguns dels seus productes per tal d’adaptar-los a les necessitats de virtualització: densitat, flexibilitat i rendiment. Dell ha implementat solucions VMware des del primer hipervisor, que es va comercialitzar l’any 2001. No obstant això, en els últims anys han signat acords amb fabricants com Citrix i Microsoft per tal d’oferir un ventall més ampli de possibilitats en el món de la virtualització.

Configuració i utilització de les màquines virtuals

En els últims anys moltes empreses han optat per implantar solucions de virtualització en els seus servidors. Però implantar una solució d’aquest tipus no és una tasca fàcil, ja que els administradors han de disposar de coneixements sobre el tema, cosa que no sempre passa.

Significat de la nomenclatura de Dell

Dell utilitza per a la gamma PowerEdge una nomenclatura pròpia basada en una lletra i tres dígits. La lletra indica el tipus de servidor: (R) bastidor o rack, (M) modular, (T) torre. El primer dígit indica el nombre de sòcols del sistema: del 1 al 3 per a un sòcol, del 4 al 7 per a dos sòcols, 9 per a quatre sòcols i 8 per a dos o quatre sòcols, dependrà del processador. El segon dígit fa referència a la generació: 0 per a la generació 10, 1 per a la generació 11… El tercer dígit indica el fabricant del processador: 0 per a Intel i 5 per a AMD.

Primer cal establir uns objectius clars sobre quina és la finalitat d’aplicar aquesta tecnologia. Un cop es tingui clar l’objectiu, caldrà analitzar tots els productes que hi ha al mercat, tant de pagament com de programari lliure, per veure quin dóna millors resultats. No s’usa el mateix el programari per virtualitzar un servidor que per virtualitzar escriptoris.

Un cop s’ha escollit el tipus de virtualització i el producte que s’implantarà, cal comprovar que el nostre maquinari compleix els requeriments tècnics. Abans d’instal·lar el programa en el servidor de producció, cal fer un simulacre en un entorn de proves per poder valorar el seu funcionament. Si les proves realitzades són satisfactòries, es pot procedir a la instal·lació del programa en els sistemes productius, prenent totes les mesures de precaució necessàries.

Migració en calent

Un dels grans avantatges de la virtualització és la gran flexibilitat que ofereix tant per la creació, eliminació i modificació dels recursos de les màquines virtuals com per al canvi de màquina física.

La migració en calent (en anglès, live migration) consisteix a poder traslladar una màquina virtual des d’una màquina física a una altra sense que l’usuari se n’adoni. S’anomena migració en calent ja que mentre s’està movent d’un lloc a un altre la màquina virtual continua estant operativa.

Els principals fabricants (VMware, Microsoft i Citrix) ja disposen de solucions que permeten aquest tipus de migracions.

La migració en calent pot canviar una màquina virtual d’un servidor físic a un altre de manera que el temps d’inactivitat sigui de mil·lisegons. No obstant això, no és una tasca fàcil, ja que s’ha de traslladar el contingut de la memòria, del disc dur, l’estat del processador i les connexions de xarxa. A continuació es detalla cadascun d’aquests aspectes:

  • Migració de la memòria: es tracta d’un procés complicat, ja que mentre es transfereix aquesta informació del node origen al de destinació, la màquina continua fent modificacions. Aquest traspàs d’informació es pot realitzar de moltes maneres diferents, però sempre s’ha de prioritzar la que permeti minimitzar el temps d’inactivitat i el temps total de la migració.
  • Migració del disc dur: és força similar al procés de migració de la memòria, tot i que en aquest cas el volum de dades que s’han de transmetre és major i per tant el temps de migració és superior. Per solucionar aquest problema, els fabricants utilitzen sistemes d’emmagatzematge centralitzat com per exemple SAN, NFS o iSCSI. D’aquesta manera, tots els servidors físics estan connectats a un mateix sistema d’emmagatzematge i quan una màquina virtual es mogui de servidor no serà necessària la migració del disc dur i es reduirà així considerablement el temps d’inactivitat.
  • Migració de connexions de xarxa: per facilitar la migració de connexions de xarxa cal que tots els servidors formin part de la mateixa subxarxa. D’aquesta manera les adreces IP que utilitzin estaran dins del mateix rang. Quan una màquina virtual vulgui canviar de servidor físic, només haurà d’enviar un missatge ARP a l’adreça de difusió indicant l’adreça MAC de la nova targeta de xarxa. Com que aquest canvi només afecta a nivell físic, les connexions que la màquina virtual tenia establertes no es veuran afectades, ja que la seva adreça IP continuarà sent la mateixa.
  • Migració del processador: en canviar de processador és quan realment es produeix la migració. Per aquest motiu ha de ser l’últim recurs que canviem de lloc. Primer passarem les dades, tant les del disc dur com les de la memòria, després les connexions i per acabar el processador, juntament amb alguna dada que hagi estat modificada amb posterioritat a la seva còpia. Cal tenir present el tipus de processadors dels servidors, ja que poden haver-hi incompatibilitats entre processadors de diferents fabricants.

La migració en calent permet millorar la gestió de rendiment de les màquines, ja que és una eina molt potent per als administradors de clústers. Permet separar el programari del maquinari on es troba allotjat i gestionar un clúster de servidors com si es tractés d’un domini.

La virtualització en calent ofereix molts avantatges. Entre d’altres, redueix el temps d’inactivitat en cas de fallada del maquinari, permet fer un repartiment de càrrega de màquines virtuals, afavoreix l’escalabilitat de les aplicacions i serveis i permet fer un ús més eficient del sistemes.

Aquests són alguns dels productes que permeten la migració en calent: VMware ESX, Hyper-V Windows Server 2008 R2, Xen, KVM i OpenVZ.

Virtualització i alta disponibilitat

La virtualització és una de les tècniques més eficients i més econòmiques per garantir l’alta disponibilitat en els sistemes d’informació. Pel gran nombre d’avantatges que ofereix, i no només en termes d’alta disponibilitat, és una de les solucions més adoptades per les empreses. En els últims anys han estat moltes les companyies que han apostat per aquesta tecnologia i es preveu que en un futur proper encara seran més les que apostaran per la virtualització.

A continuació es detallen els principals avantatges que aporta la virtualització en termes d’alta disponibilitat:

  • Alta disponibilitat de totes les aplicacions: la virtualització ofereix una solució d’alta disponibilitat completa, ja que protegeix la continuïtat de negoci tant a nivell físic com a nivell lògic.
  • Repartiment de càrrega: permet gestionar de manera eficient la càrrega dels servidors físics i evitar que es puguin saturar i entrar en fallada. Fa un ús eficient de les màquines físiques i aconsegueix un procés d’optimització continua.
  • Recuperació en cas de desastre: simplifica i automatitza els fluxos de recuperació en cas de desastre (prevenció, actuació i recuperació). Converteix algunes instruccions manuals de recuperació en processos automatitzats. Fins i tot permet centralitzar la gestió del pla en cas de desastre des d’una plataforma de gestió.
  • Protecció i gestió dels escriptoris corporatius: la virtualització d’escriptoris permet poder oferir als usuaris finals solucions d’alta disponibilitat. En cas de fallada del terminal d’accés, l’usuari podrà iniciar sessió en pocs segons des de qualsevol altre dispositiu connectat a la xarxa.
  • Flexibilitat i escalabilitat: depenent de la demanda d’un servei, les màquines es podran readaptar per fer front a les diferents necessitats. La flexibilitat és molt més alta que en els models convencionals. S’aconsegueix que les màquines s’adaptin a la demanda real i s’evita així que hi pugui haver una sobresaturació i, per tant, una caiguda del sistema.

Informàtica en núvol

En els últims anys ha sorgit una nou concepte anomenat informàtica en núvol (en anglès, cloud computing), que permet a les empreses disposar de serveis o aplicacions d’alta disponibilitat sense necessitat de desplegar cap tipus d’infraestructura addicional. Aquesta solució ràpidament va ser adoptada per empreses de nova creació o amb pressupostos ajustats. I els seus bons resultats han fet que cada cop siguin més les companyies que estan adoptant solucions d’aquest tipus.

La informàtica en núvol és un sistema d’emmagatzematge i ús de recursos informàtics basat en el servei en xarxa, que consisteix a oferir a l’usuari un espai virtual, generalment a Internet, en què pot disposar de les versions més actualitzades de maquinari i programari.

És un nou model de negoci que permet als usuaris accedir a un catàleg de serveis adaptables i flexibles a les necessitats de les empreses. Els usuaris paguen als proveïdors d’aquests serveis per l’ús que en fan. Aquests serveis es poden adaptar totalment a les demandes de negoci i se’n pot sol·licitar un augment o disminució si es produeix un pic o una davallada de feina. D’aquesta manera, les empreses disposen de serveis totalment flexibles sense haver-se de preocupar del maquinari, el manteniment o les actualitzacions.

Google Apps al Departament d'Ensenyament

L’any 2010 el Departament d’Ensenyament de Catalunya va fer la migració del seu correu intern XTEC a Google Apps, el servei de correu electrònic ofert per Google a les empreses. D’aquesta manera, els usuaris poden accedir al correu des de qualsevol dispositiu com si es tractés d’un compte de Gmail.

Les empreses que ofereixen aquest tipus de serveis disposen d’una infraestructura basada en l’alta disponibilitat. La seva línia de negoci es basa en oferir serveis a uns clients distribuïts arreu del món i no es poden permetre una caiguda dels seus sistemes, per petita que sigui. Per evitar aquests temps d’inactivitat tenen implantats sistemes per garantir l’alta disponibilitat com la redundància en la xarxa, les xarxes d’emmagatzematge, la redundància de servidors, la redundància en el subministrament elèctric, els plans de contingència i la virtualització.

EyeOS

L’any 2006, un grup de joves programadors catalans van llançar al mercat el primer escriptori virtual en núvol. La idea va ser tot un èxit i en pocs mesos van tenir una gran acceptació arreu del món. L’objectiu era que els usuaris accedeixin a les seves aplicacions com si es tractés d’un sistema operatiu des de qualsevol lloc del món. Per defecte, eyeOS porta un gran nombre d’aplicacions, però a més se n’hi poden incloure d’altres i, si s’és programador, programar-ne de noves.

El concepte d’informàtica en núvol és molt ampli i engloba diferents models de negoci. Aquests es poden classificar de la manera següent (figura):

Figura Tipus d’informàtica en núvol
  • Programari com a servei (SAAS): en anglès, software as a service. Es caracteritza per oferir com a servei una aplicació completa a la carta. Els usuaris es connecten a través d’una xarxa, habitualment Internet, al servidor del proveïdor. En aquest model de negoci no es paguen llicències de programari sinó que es paga per ús que se’n fa. Les aplicacions estan situades en una infraestructura pública. El proveïdor líder en solucions de programari com a servei és Salesforce, amb el seu CRM customer relationship management distribuït. No obstant això, en els últims anys han sorgit noves empreses que ofereixen aquest tipus de servei com Google Apps, Dropbox, Evernote, Basecamp o Workday.
  • Plataforma com a servei (PAAS): en anglès, platform as a service. És una solució intermèdia en què no només s’ofereix el maquinari, sinó que també contempla els elements bàsics per poder instal·lar una aplicació com són el sistema operatiu, els sistemes gestors de bases de dades i servidors d’aplicacions. Això permetrà al client instal·lar les seves pròpies aplicacions i despreocupar-se del manteniment del maquinari i del programari base. Un dels principals proveïdors de servei és Google App Engine, entre d’altres com Microsoft Azure o Force.
  • Infraestructura com a servei (IAAS): en anglès, infrastructure as a service. En aquesta capa s’ofereix com a servei la capacitat de procés i d’emmagatzematge, normalment mitjançant un plataforma de virtualització. En comptes d’adquirir servidors i habilitar centres de processament de dades, les empreses lloguen aquests recursos a un proveïdor extern. El principal proveïdor en el mercat és Amazon, amb Amazon EC2, tot i que de mica en mica van sorgint altres empreses com GoGrid o l’empresa catalana Abiquo.

Els objectius principals d’aquesta tecnologia són augmentar la flexibilitat, millorar l’accessibilitat, reduir els costos i millorar l’alta disponibilitat:

Microsoft Office 365

Microsoft no ha volgut perdre el seu lideratge en paquets ofimàtics i l’any 2011 va llançar al mercat un nou producte d’informàtica en núvol, anomenat Microsoft Office 365. Aquest producte disposa de les eines ofimàtiques Excel, Word, PowerPoint, Outlook, Exchange, Sharepoint i un sistema de conferències de vídeo i àudio. Els usuaris no han d’instal·lar cap d’aquestes aplicacions, sinó que hi accedeixen per Internet i paguen una quota mensual.

  • Alta disponibilitat: permet a les empreses disposar de solucions d’alta disponibilitat a un preu reduït, molt per sota del que haurien d’invertir si implantessin solucions pròpies.
  • Reducció de costos: com que l’empresa no disposa de servidors propis, no ha de realitzar la inversió inicial de tota aquesta infraestructura, que té un cost molt elevat i que, sovint, en petites i mitjanes empreses es troba infrautilitzada. A més, en no disposar de servidors propis, l’empresa no ha de destinar recursos al seu manteniment. Únicament cal adquirir uns terminals per accedir aquests serveis sense grans requisits tècnics, ja que el procés es realitza en el servidor.
  • Accessibilitat: el fet d’utilitzar aquest tipus de solucions permet més flexibilitat en els usuaris, ja que poden accedir als recursos des de diferents tipus de dispositius, sistemes operatius i situació geogràfica.
  • Flexibilitat: permet adaptar ràpidament els sistemes de l’empresa a les necessitats de negoci. Davant d’un creixement molt ràpid es pot donar resposta en qüestió d’hores quan en un sistema convencional es requeririen mesos de planificació i uns costos molt més elevats.

No obstant això, com qualsevol sistema que està en fase d’implantació també genera algunes incerteses en els usuaris, com, per exemple, el control del nivell de servei acordat, la dependència que genera amb el proveïdor de servei i la ubicació i seguretat de les dades.

  • Nivell de servei: les empreses proveïdores s’han de comprometre a oferir un determinat nivell de servei prèviament acordat amb els usuaris. Sorgeixen dubtes sobre de quina manera s’estableix el nivell de servei a complir per part de les empreses proveïdores i com es pot verificar i controlar que s’estigui treballant dins dels nivells acordats.
  • Dependència: implantar una solució d’aquest tipus genera una gran dependència amb el proveïdor de servei. Òbviament el grau de dependència dependrà del tipus d’informàtica en núvol que s’estigui aplicant, sent les solucions de programari com a servei, les PAAS, les més dependents. Sovint, en utilitzar solucions d’aquest tipus les empreses han d’adaptar la seva manera de treballar als productes oferts.
  • Ubicació de la informació: una de les principals pors que tenen les empreses a l’hora d’implantar solucions d’aquest tipus és el fet que les dades no es trobin allotjades en la mateixa empresa, sinó que sigui una empresa externa la que tingui aquesta informació i la gestioni. Això genera als administradors incerteses sobre l’ús, la gestió i el compliment de la normativa associada a les dades.

Algunes de les solucions d’informàtica en núvol que més utilitzen les empreses són:

  • Google Apps: és un servei de Google que ofereix a les empreses versions personalitzades dels seus propis productes: Gmail, Google Groups, Google Calendar, Google Talk, Google Docs i Google Sites. Alguns dels seus principals avantatges:
    • Estalvi de costos: les solucions de Google Apps permeten reduir costos de gestió i manteniment a les empreses. Es calcula que es poden reduir a una tercera part del que suposaria la implantació d’un servidor de correu propi. A goo.gl/HCOqv es detallen els càlculs de l’estalvi que suposaria una solució d’aquest tipus.
    • Espai d’emmagatzematge superior: la capacitat d’emmagatzematge de les bústies de correu és de 25 GB, molt superior als sistemes convencionals.
    • Accés a través del mòbil: permet accedir a l’aplicatiu des de dispositius mòbils Blackberry, iPhone, Windows Mobile i Android.
    • Alta disponibilitat: Google garanteix una disponibilitat dels seus serveis del 99,9% i utilitza la replicació síncrona de les dades entre diferents centres de dades.
    • Control total i administratiu de les dades: els administradors poden personalitzar totalment Google Apps per cobrir les necessitats que puguin tenir en relació a l’aparença, aspectes tècnics i empresarials.
    • Assistència 24/7: tot i ser molt intuïtiu i fàcil d’utilitzar ofereix assistència als administradors tots els dies de l’any les vint-i-quatre hores del dia.
    • Compliment de la normativa i seguretat de la informació: s’implanten les mateixes mesures de seguretat que en els serveis de Google i es garanteix la confidencialitat de les dades.
  • Dropbox: sistema d’allotjament de fitxers multiplataforma. El servei permet emmagatzemar i sincronitzar fitxers en línia per ser consultats des de diferents dispositius. A més, també permet la compartició de fitxers entre diferents usuaris. Dropbox permet crear comptes gratuïts amb una capacitat de fins a 2 GB i de pagament fins a 1 TB per a grups de treball.
  • Evernote: eina informàtica multiplataforma per a la gestió d’informació personal a base de notes. És una eina ideal per a executius, ja que permet centralitzar i gestionar de manera eficient informació rellevant com notes, imatges, idees… Disposa de versió gratuïta i de versió de pagament amb un capacitat d’emmagatzematge més alta.
  • Salesforce: ofereix solucions de CRM per a la gestió dels clients, gestió d’oportunitats i campanyes de màrqueting, entre d’altres. A més, les seves funcionalitats es poden ampliar amb més de 1.000 aplicacions addicionals.
  • Endeve: sistema de facturació en línia que permet a les empreses portar la gestió de la comptabilitat de l’empresa de manera eficient i centralitzada. Permet crear factures des de qualsevol lloc i dispositiu.
  • Google Drive: paquet ofimàtic per treballar des de qualsevol dispositiu en l’elaboració de documents de text, fulls de càlcul, presentacions i dibuixos. Permet l’emmagatzematge i la compartició de documents entre diferents usuaris.

Contenidors

Una alternativa a la virtualització és l’ús de contenidors. Aquests permeten configurar els entorns de desplegament de manera que poden reproduir-se de forma idèntica en qualsevol màquina, independentment del sistema operatiu i la configuració de l’amfitrió.

Tot i que la utilització de contenidors i màquines virtuals pot semblar molt similar, no es tracta del mateix concepte.

  • Els contenidors són molt més lleugers i pràcticament no afecten el rendiment de l’aplicació. El motiu és que utilitzen el mateix nucli del sistema operatiu. A més a més, l’espai que ocupa en disc és molt reduït, ja que només s’hi han d’afegir els fitxers específics que requereix l’aplicació que s’executa en el contenidor.
  • Les màquines virtuals són instal·lacions completes del sistema operatiu i afegeixen capes extres a l’execució dels programes, ja que cada instrucció ha de passar pel sistema operatiu virtualitzat, el programari de virtualització, el maquinari de virtualització de l’equip hoste i el nucli del sistema operatiu hoste. Això té un cost significatiu en el rendiment. La preparació de la màquina virtual també és més costosa, en haver-se de fer una instal·lació completa i, també, requreix més espai al disc. Un avantatge de la virtualització és que es poden fer servir màquines virtuals amb diferents sistemes operatius independentment de quin estigui instal·lat a la màquina hoste (per exemple, una màquina virtual amb Linux pot executar-se en una màquina hoste amb Windows).

En el cas de sistemes distribuïts (una aplicació desplegada a múltiples màquines), és molt útil utilitzar contenidors, ja que només cal preparar el contenidor una vegada i instal·lar-lo en tants servidors com sigui necessari. Aquest és un dels motius pels quals Google fa servir contenidors per desplegar les seves aplicacions en lloc d’haver de configurar milers d’equips individualment. Un inconvenient, però, d’aquesta tecnologia és que no poden fer-se servir contenidors que utilitzen un sistema operatiu en una màquina amb un sistema operatiu diferent (per exemple, no es pot utilitzar un contenidor de Linux en una màquina amb Windows).

Informació addicional sobre contenidors

Podeu trobar-ne més informació a l’enllaç següent: goo.gl/N44YOg.

Contenidors en entorns virtualitzats

En cas d’haver de treballar amb contenidors en ordinadors amb un sistema operatiu diferent del del contenidor, es pot recórrer a la utilització de màquines virtuals. Cal tenir en compte que es perd part de l’eficiència proporcionada per aquesta tecnologia, però és habitual treballar d’aquesta manera en entorns de desenvolupament, ja que l’equip de programadors pot treballar amb el sistema operatiu que s’adapti més bé a les seves necessitats. A més a més, en aquests casos, la pèrdua de rendiment no és crítica.

Tot i que aquesta tecnologia dels contenidors es troba disponible des dels anys 80 al sistema operatiu UNIX, fins a l’aparició de Docker, l’any 2013, no era gaire popular. Actualment és fàcil trobar proveïdors de serveis d’allotjament que admeten Docker i permeten fer el desplegament de les aplicacions automàticament (per exemple, Amazon Web Services i Google Cloud).

Docker és un sistema de contenidors amb llicència de programari lliure.

Linux Containers

Linux Containers és el nom del projecte darrere les tecnologies LXC, LXD i LXCFS que té com a objectiu proporcionar un entorn neutral per al desenvolupament de les tecnologies de contenidors a Linux.

  • LXC és un conjunt d’eines per a la creació de contenidors sobre Linux.
  • LXD proporciona una nova interfície per treballar amb LXC mitjançant una única eina de línia d’ordres i una forma de treballar més similar a la que s’utilitza habitualment amb màquines virtuals.
  • LXCFS és un sistema de fitxer per noms d’usuari (FUSE, en anglès) que soluciona alguns problemes amb què es troben els usuaris que fan servir un sistema de contenidors.

Quan es treballa amb aquestes tecnologies es recomana utilitzar la distribució de Linux Ubuntu, ja que inclou totes les dependències necessàries, i Cannonical Ltd inclou suport a llarg termini (LTS o long term support, en anglès) per a LXC a les seves pròpies distribucions de tipus LTS.

El component LXC és la base del sistema de contenidors i el seu objectiu és crear un entorn el més proper possible a una instal·lació estàndard de Linux, però fent servir el mateix nucli del sistema operatiu de la màquina on s’executa.

Per altra banda, el component LXD fa servir la implementació de LXC internament, però afegeix un sistema de càrrega d’imatges per crear els contenidors. Els contenidors es gestionen de manera similar a com es faria si fossin màquines virtuals i permet realitzar aquestes operacions a través de la xarxa.

Un altre avantatge de fer servir LXD és que pot utilitzar-se conjuntament amb OpenStack (mitjançant el connector nova-lxd), de manera que es pot treballar al núvol tant amb contenidors com amb màquines virtuals de forma transparent de cara als usuaris. Això obre la porta a fer servir sistemes més avançats que incloguin servidors de càrrega i la creació automatitzada d’instàncies, per exemple, per augmentar el nombre de contenidors que serveixen una determinada aplicació segons el nombre d’usuaris connectats al sistema.

OpenStack

OpenStack és un sistema operatiu per a núvols que permet controlar una gran quantitat de recursos mitjançant un centre de dades. Se’n pot trobar més informació a l’enllaç següent: goo.gl/SZWz5s.

Contenidors: Docker

Docker és un sistema de contenidors basat en el nucli de Linux. Es tracta de programari lliure i entre els principals col·laboradors hi ha empreses com Google, IBM, Cisco, Microsoft i Red Hat.

Com que es tracta d’un contenidor basat en Linux, no pot utilitzar-se directament a màquines amb altres sistemes operatius, però és possible utilitzar-lo en altres entorns de desenvolupament mitjançant la virtualització. Al seu web hi ha enllaços a instal·ladors que simplifiquen aquesta tasca i inclouen tots els fitxers necessaris per instal·lar Docker a Linux, Mac i Windows.

Anteriorment, per utilitzar Docker en sistemes operatius no basats en Linux, s’utilitzava Docker Toolbox. Aquesta eina, però, es troba obsoleta i no s’ha d’utilitzar amb els sistemes operatius actuals.

Alguns avantatges de desplegar una aplicació utilitzant Docker són els següents:

  • L’aplicació funciona igual en el servidor de proves que en el de producció perquè l’entorn és el mateix.
  • Cada aplicació es troba aïllada de la resta d’aplicacions, en el seu propi contenidor.
  • No cal instal·lar cap altre component, a banda de Docker, per executar l’aplicació en un altre equip. L’aplicació funciona directament en instal·lar el contenidor, perquè totes les dependències es troben al contenidor.

Els contenidors de Docker són instàncies d’una imatge que conté tots els fitxers necessaris empaquetats per crear el contenidor en un sol fitxer. Al seu torn, aquesta imatge és construïda a partir d’un fitxer anomenat Dockerfile, que conté totes les ordres necessàries per assemblar-la (vegeu la figura).

Figura Procés d’execució d’un contenidor

El primer pas per treballar amb contenidors de Docker és instal·lar-lo fent servir l’enllaç següent: goo.gl/n7d5qg. En aquesta pàgina es pot trobar l’instal·lador per utilitzar Docker amb Mac, Windows i diferents distribucions de Linux. La instal·lació és molt simple en tots els sistemes operatius, però en cas de dubte recordeu que podeu trobar tota la informació necessària a la mateixa pàgina de descàrrega.

Una vegada instal·lat, cal executar-lo. En la majoria de sistemes operatius, es necessiten permisos d’administrador per poder gestionar la xarxa. Per comprovar que s’ha instal·lat amb èxit, obriu una finestra amb la terminal o el símbol del sistema (segons quin sistema operatiu feu servir) i escriviu-hi docker -v.

El resultat ha de ser similar al següent:

~ $ docker -v
Docker version 17.03.1-ce, build c6d412e

Creació i desplegament d'un contenidor amb Docker

Per veure el funcionament d’un contenidor, cal crear-ne un per executar una aplicació en PHP que mostri per pantalla el missatge: “Hola món!”. Primer, creeu un directori anomenat prova-docker, on es desaran tots els fitxers d’aquest projecte. Dintre d’aquest directori, creeu-ne un altre anomenat src amb un fitxer de text pla anomenat index.php i el contingut següent:

  1. <?php
  2.  
  3. echo "Hola món!";

Per poder executar aquesta aplicació és necessari un sistema operatiu, un servidor web (per exemple, Apache) i PHP. Per indicar a Docker que ha d’incloure la imatge, creeu un fitxer de text pla dins del directori prova-docker anomenat Dockerfile.

Docker requereix el nom d’una imatge per fer-la servir com a base. Aquestes imatges inclouen els fitxers propis de la distribució (per exemple, Ubuntu o Debian) i en alguns casos algunes aplicacions preinstal·lades com PHP o MySql.

Repositori d'imatges per Docker

Podeu trobar imatges de Docker fiables per utilitzar com a base a l’enllaç següent: hub.docker.com. En aquest repositori hi ha tant imatges oficials (més fiables) com públiques.

L’enllaç a la imatge de Docker oficial per a PHP es troba a l’enllaç següent: hub.docker.com/_/php/. Al principi de la pàgina hi ha la llista d’imatges disponibles (vegeu la figura).

Figura Imatge de Docker oficial PHP

Com es pot apreciar, el llistat és força extens. Si voleu més informació sobre cadascuna de les opcions, podeu consultar la mateixa pàgina. En aquest exemple es fa servir el servidor web Apache i, per consegüent, la imatge base correspon a la fila “7.1.3-apache, 7.1-apache, 7-apache, apache”.

Fixeu-vos que a cada fila es mostren, d’esquerra a dreta, les opcions disponibles, de la més concreta a la més genèrica. És a dir, si s’especifica 7.1.3-apache es farà servir la imatge amb la versió 7.1.3 de PHP i Apache, mentre que si s’especifica en el fitxer 7-apache es farà servir una versió de PHP 7, però no sabreu quina (habitualment la més recent que s’hagi afegit a aquest repositori). En un cas encara més extrem, si només s’especifica apache, la versió de PHP podria ser qualsevol (per exemple, PHP 8 o 9).

Per aquests motius es recomana fer servir sempre una versió concreta. En cas contrari, es poden produir incompatibilitats en les aplicacions i, fins i tot, pot passar que a partir d’una mateixa imatge base es generin diferents imatges, ja que la versió pot canviar en qualsevol moment.

Habitualment els números de versió d’un programa indiquen les diferències següents:

  • El primer indica el número de la versió, i no acostuma a ser completament compatible amb l’anterior (per exemple, PHP 7.0 no és compatible amb PHP 5.6).
  • El segon número s’utilitza quan s’afegeixen noves funcionalitats.
  • El tercer número indica correccions.

Així doncs, a l’hora de seleccionar una imatge, normalment només cal indicar els dos primers números de versió. Per exemple, si s’indica 7.1 com a versió, s’inclou la versió més recent amb totes les correccions actualitzades.

Per indicar a Docker la imatge base, es fa amb l’ordre FROM seguida del nom del repositori (php), dos punts (:) i el nom de la imatge (per exemple, 7.1-apache):

FROM php:7.1-apache

Com que es vol copiar l’aplicació dins del contenidor, cal utilitzar l’ordre COPY indicant la ruta d’origen i la ruta de destí:

COPY src/ /var/www/html

Aquesta és la ruta que utilitza aquesta imatge en concret, que està basada en la distribució de Debian de Linux. Per saber a quina distribució pertany una imatge i tot el que conté, només cal clicar l’enllaç a la dreta de cada fila per accedir al fitxer Dockfile utilitzat per crear-la.

Finalment, cal indicar a Docker que cal exposar el port 80 del contenidor per poder accedir a la pàgina web. Per fer-ho s’utilitza l’ordre EXPOSE:

EXPOSE 80

Així doncs, el contingut del fitxer Dockerfile per crear la imatge ha de ser:

FROM php:7.1-apache
COPY src/ /var/www/html
EXPOSE 80

Una vegada creat el fitxer Dockerfile i desat dintre de la carpeta prova-docker, per generar la imatge heu d’escriure a la línia d’ordres:

docker build -t hola-mon .

El paràmetre -t es fa servir per indicar el nom de la imatge (en aquest cas, “hola-mon”) i el punt final indica que es crearà en el mateix directori. Una vegada es premi la tecla retorn, començaran a descarregar-se els fitxers necessaris per crear la imatge.

El resultat ha de ser similar al següent:

~/prova-docker $ docker build -t hola-mon .
Sending build context to Docker daemon 3.584 kB
Step 1/3 : FROM php:7.1-apache
7.1-apache: Pulling from library/php
6d827a3ef358: Pull complete
87fe8fbc743a: Pull complete
f6d1a8d304ab: Pull complete
caf3547d9b73: Pull complete
1004db2760ff: Pull complete
66e2d66a547e: Pull complete
bbfaa62c234a: Pull complete
19ce8807f4d1: Pull complete
63f8d35ca798: Pull complete
a5594b4d2a52: Pull complete
42f1cbd038cf: Pull complete
a739656e85cb: Pull complete
97b6a5f245a1: Pull complete
Digest: sha256:c865c723fbe6a41ccc9006c6c3f3c0225ad06f3ab69c752419d6cd8f7ca51e5e
Status: Downloaded newer image for php:7.1-apache
 ---> b177bfebca36
Step 2/3 : COPY src/ /var/www/html
 ---> a021f0647910
Removing intermediate container 4db2b286aeca
Step 3/3 : EXPOSE 80
 ---> Running in f1da636d83b5
 ---> e991d0ca6063
Removing intermediate container f1da636d83b5
Successfully built e991d0ca6063

Seguidament, per executar el contenidor, heu d’escriure des de la línia d’ordres:

docker run -p 80:80 hola-mon 

L’opció run indica que es vol executar una instància de la imatge “hola-mon”. Fixeu-vos que el nom de la imatge ha d’anar al final de l’ordre. L’opció -p indica la redirecció de ports (és el primer el port de la màquina hoste i el segon el port del contenidor). És a dir, s’executarà el contenidor “hola-mon” i es podrà accedir al seu port 80 des del port 80 de la màquina hoste.

El resultat d’executar-lo ha de ser similar al següent:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Apr 08 12:36:18.758692 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/7.1.3 configured -- resuming normal operations
[Sat Apr 08 12:36:18.758735 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

Tot i que es mostren missatges d’advertència d’Apache, l’aplicació ha de funcionar correctament. Per comprovar-ho només heu d’obrir el vostre navegador i introduir com a URL “localhost”. Hauria de mostrar-se per pantalla el missatge “Hola món!”.

En cas de voler utilitzar un port diferent de la màquina hoste (per exemple, el 8080, per accedir des de l’URL localhost:8080), només cal executar la imatge canviant aquest port, tal com es mostra en l’exemple següent:

docker run -p 8080:80 hola-mon 

Si proveu de modificar el fitxer index.php i actualitzeu la pàgina al navegador, veureu que els canvis no s’hi veuen reflectits. Això és d’esperar, perquè l’aplicació s’ha copiat dins del contenidor. Si es vol actualitzar l’aplicació, cal tornar a construir el contenidor.

Hi ha casos en què aquest comportament no és el desitjat (per exemple, durant el desenvolupament). Per solucionar aquest problema, Docker ofereix l’opció de muntar volums que funcionaran com a directoris compartits entre la màquina hoste i el contenidor.

Per muntar un volum, s’ha de fer des de la línia d’ordres utilitzant l’opció -v i indicant el nom del directori de la màquina hoste, dos punts (:), i el nom del directori al contenidor.

docker run -p 80:80 -v /provar-docker/src/:/var/www/html/ hola-mon

Cal destacar que s’ha d’utilitzar la ruta absoluta. No és vàlid fer servir ~ per indicar que es tracta de la carpeta de l’usuari actual a Linux o Unix, ni .. per indicar que es tracta del directori pare.

Fixeu-vos que, per muntar un contenidor, s’ha de fer des de la línia d’ordres i no al fitxer Dockerfile: d’aquesta manera s’evita que es trenqui la portabilitat. Com que es tracta de recursos externs al contenidor, Docker no pot assegurar que aquests estiguin disponibles en qualsevol equip.

Si llisteu el contingut del vostre directori, no veureu la imatge creada enlloc. Això és normal: no forma part de la vostra aplicació i no tindria sentit que es mostrés en aquest directori. Per veure un llistat de les imatges instal·lades, s’utilitza l’ordre docker images i el resultat serà similar al següent:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hola-mon            latest              e991d0ca6063        56 minutes ago      387 MB
php                 7.1-apache          b177bfebca36        2 weeks ago         387 MB

Per poder desplegar l’aplicació l’heu de pujar al repositori d’imatges de Docker. Per fer-ho, necessiteu crear un compte a Docker Hub (hub.docker.com). Una vegada creat el compte i confirmat mitjançant l’enllaç rebut al correu, podeu connectar amb la pàgina (vegeu la figura).

Figura Pàgina principal d’usuari a Docker Hub

Per poder pujar la imatge al repositori, heu d’autenticar-vos amb el nom d’usuari i la contrasenya des de la línia d’ordres, fent servir l’ordre docker login. No cal passar cap paràmetre, però us demanarà el nom d’usuari i la contrasenya. El resultat serà similar al següent:

~/prova-docker $ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: iocm08
Password:
Login Succeeded

El següent pas és etiquetar la imatge per pujar-la al repositori. Per fer-ho, cal saber l’identificador (ID) de la imatge i fer servir l’ordre docker tag seguida de l’ID, l’espai de noms (que es correspon amb el nom d’usuari de Docker Hub), el nom del repositori, dos punts (:) i l’etiqueta (tag, en anglès).

Podeu veure l’identificador de la imatge executant l’ordre docker images, que us mostrarà el llistat d’imatges amb el seu repositori, l’etiqueta, l’identificador, quant fa que es va crear i la mida.

Per exemple, per poder pujar el contenidor amb identificador “0991d0ca6063” al repositori “iocmo8/hola-mon”, cal executar l’ordre següent:

docker tag e991d0ca6063 iocm08/hola-mon:latest

En executar docker images, el resultat serà similar al següent:

~/prova-docker $ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
hola-mon              latest              e991d0ca6063        2 hours ago         387 MB
iocm08/hola-mon       latest              e991d0ca6063        2 hours ago         387 MB
php                   7.1-apache          b177bfebca36        2 weeks ago         387 MB

Fixeu-vos que a banda de la imatge utilitzada com a base i la imatge del contenidor creat originalment, s’ha afegit una nova imatge que inclou l’espai de noms, però conserva l’identificador original.

Seguidament, podeu pujar la imatge a Docker Hub fent servir l’ordre docker push, i el resultat serà similar al següent:

The push refers to a repository [docker.io/iocm08/hola-mon]
2c16acb979ce: Pushed
1c6da1b67140: Mounted from library/php
524998ac985c: Mounted from library/php
b0048e0cd0f0: Mounted from library/php
0739f0fe8939: Mounted from library/php
8f3f5d50c083: Mounted from library/php
46af8a5b5036: Mounted from library/php
4b63183c9b32: Mounted from library/php
5e34f9b1cc0a: Mounted from library/php
882b0937fe95: Mounted from library/php
6b42159d1088: Mounted from library/php
0e985d879eb0: Mounted from library/php
2b6ca8b57a27: Mounted from library/php
5d6cbe0dbcf9: Mounted from library/php
latest: digest: sha256:bd3d069c537bdadc9587e52d9a88e1c06b7d4bd56c3b304cbb590fbbdb36dfaf size: 3242

Si actualitzeu la pàgina web amb l’usuari autenticat a Docker Hub, veureu com ha aparegut el repositori “hola-mon”, tal com apareix a la figura).

Figura Pàgina principal d’usuari a Docker Hub

Per poder provar que el contenidor s’ha pujat correctament, podeu descarregar-lo i provar de posar-lo en marxa, però primer heu d’eliminar la imatge creada. Per eliminar una imatge o un tag, s’ha d’utilitzar l’ordre docker rmi, indicant el nom de la imatge i l’etiqueta en cas que aquesta no sigui “latest” (que fa referència a l’última).

És possible que alguna de les imatges o etiquetes siguin utilitzades per algun contenidor (encara que els contenidors s’hagin aturat). Per forçar-ne l’eliminació, s’ha de fer servir l’opció –force. Així doncs, per eliminar la imatge “hola-mon” i l’etiqueta “iocm08/hola-mon”, suposant que la segona estigui sent utilitzada, es fa de la manera següent:

docker rmi hola-mon
docker rmi iocm08/hola-mon --force

El resultat serà similar al següent:

Untagged: hola-mon:latest
Untagged: iocm08/hola-mon:latest
Untagged: iocm08/hola-mon@sha256:bd3d069c537bdadc9587e52d9a88e1c06b7d4bd56c3b304cbb590fbbdb36dfaf
Deleted: sha256:e991d0ca60632dcf5795cb8e18da70f3aa814b0309539c003ad0bbb468686f7d
Deleted: sha256:a021f0647910f846584fdd047aa9e4ec5fb9aebfcbfa2e0ff08c843ac7f10ada

Si executeu l’ordre docker images, comprovareu que només hi ha la imatge base utilitzada per crear la vostra imatge:

~/prova-docker $ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
php                   7.1-apache          b177bfebca36        2 weeks ago         387 MB

Per acabar, podeu descarregar la imatge utilitzant l’ordre docker pull i indicant el repositori on es troba (espai de noms i nom del repositori). Aquesta informació també es pot trobar a la pàgina d’usuari de Docker Hub fent clic al repositori que vulgueu descarregar. Per exemple, per descarregar la imatge del repositori “iocm08/hola-mon”, heu d’utilitzar l’ordre següent:

docker pull iocm08/hola-mon

El resultat que obtindreu serà similar al següent:

~/prova-docker $ docker pull iocm08/hola-mon
Using default tag: latest
latest: Pulling from iocm08/hola-mon
6d827a3ef358: Already exists
87fe8fbc743a: Already exists
f6d1a8d304ab: Already exists
caf3547d9b73: Already exists
1004db2760ff: Already exists
66e2d66a547e: Already exists
bbfaa62c234a: Already exists
19ce8807f4d1: Already exists
63f8d35ca798: Already exists
a5594b4d2a52: Already exists
42f1cbd038cf: Already exists
a739656e85cb: Already exists
97b6a5f245a1: Already exists
a8f59612df6a: Already exists
Digest: sha256:bd3d069c537bdadc9587e52d9a88e1c06b7d4bd56c3b304cbb590fbbdb36dfaf
Status: Downloaded newer image for iocm08/hola-mon:latest

Un cop més, podeu utilitzar l’ordre docker images per comprovar que la imatge és al sistema i que pot executar-se amb docker run. Per exemple, en el cas del contenidor “iocm08/hola-mon” el resultat seria el següent:

~/prova-docker $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
iocm08/hola-mon     latest              e991d0ca6063        2 hours ago         387 MB
php                 7.1-apache          b177bfebca36        2 weeks ago         387 MB

I per executar-lo es faria servir aquesta ordre:

docker run iocm08/hola-mon

Fixeu-vos que tot i que el contenidor original no feia servir cap espai de noms, quan s’utilitza una imatge descarregada s’ha d’incloure. En cas contrari, Docker no la troba.

Com heu pogut comprovar, començar a utilitzar Docker no és excessivament complicat, però dominar totes les seves opcions i els desplegaments a una escala major és força complex. Cal tenir en compte que aquí només s’ha presentat un exemple molt simple, però que us pot servir per iniciar-vos en la utilització de contenidors.

Altres aspectes de la utilització de Docker que cal tenir en compte són els següents:

  • Quan acaba la tasca que s’està executant al contenidor, el contenidor s’atura automàticament.
  • Cada aplicació s’executa en un contenidor diferent, ja que cada contenidor està lligat a un únic procés.
  • Un mateix equip pot tenir múltiples contenidors funcionant al mateix temps. Per veure els contenidors en execució es pot fer servir l’ordre docker ps.
  • Docker fa servir un sistema de capes per generar les imatges; aquestes capes es corresponen amb les línies del fitxer Dockerfile.
  • Per automatitzar el desplegament s’acostuma a utilitzar altres eines i serveis de desplegament com Kubernetes (kubernetes.io) o Ansible (www.ansible.com).
Anar a la pàgina anterior:
Annexos
Anar a la pàgina següent:
Activitats