Download - Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Transcript
Page 1: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

VirtualizaciónconContenedores

1. IntroducciónyobjetivosEl objetivo de esta prácticas en tomar un contacto básico con soluciones para eldespliegueyconfiguracióndecontenedoresenLinux,enespeciallapartedered.Crearemos pequeños escenarios de red donde las máquinas virtuales seráncontenedores y se encontrarán en diferentes hosts. Interconectaremos dichoscontenedoresmediantevariasalternativastopológicasdiferentes.SeprobaránenconcretocontenedoresconLXDyconDocker,peroenningúnmomentose pretende llevar a cabo una evaluación de todas sus posibilidades y opciones deconfiguración.

2. ContenedoresconLXDLas herramientas para gestión de contenedores suelen incluir opciones para laoperaciónsobrelareddeinterconexióndelosmismos.Enestaprácticareduciremosalmínimolagestióndelaredatravésdeperfilesyotrasopcionesdeautomatizaciónylallevaremosacabodeformamanualparatenermásclarosufuncionamiento.Crearemosvariosescenariosdecomunicaciónentrecontenedores.

InstalacióndeLXDPuedeconsultarsuweb1paratenerunaideageneralsobreelproyectoyserecomiendasututorialbásicosobreinstalaciónycreacióndecontenedores2.Enellaboratoriopuedecrear unamáquina virtual en VirtualBox con una distribución de Linux en la que seasencillo instalarLXD.PuedeemplearporejemploUbuntuServer3,aunquedebidoasutamañodeberáguardarlaeneldisco localynoensuHome.Enundesplieguereal loscontenedorespodríanexistirenelsistemaoperativodelhostocomoenestecasodentrodeunamáquinavirtualconunhypervisortradicional.Enestecasolovamosahacerconelhypervisorparanonecesitarvariosordenadoresqueactúendehosts.Alhacerlaconfiguracióninicialdeldemoniolxdpuededecirlequenoquiereconfigurarelpuentequelevaacrear(“DoyouwanttoconfiguretheLXDbridge?).Creedosmáquinasvirtuales enVirtualBoxqueactuarán como loshosts en losque seconfigurenloscontenedores.Esasmáquinasvirtualesdeberánteneruninterfazenunaredinternaporlaquepuedancomunicarseencapa2.Apartirdeaquí,enestaprácticasellamará“host”aesasmáquinasvirtualesquehospedanaloscontenedores;sisedeseahacerreferenciaalhostfísicoempleandoVirtualBoxsedetallaráparadistinguirlodelosotros.En lasmáquinas virtuales permita acceso amodo promiscuo para el tráfico entre lasmáquinasvirtualesenelinterfazasignadoalaredinterna.

EscenariopuenteadoatravésdeLANEn este escenario tendremos dos hosts, cada uno de ellos con contenedoresconfigurados,talquetodosesoscontenedoresesténenlamismaLAN,queserálaLANdeloshosts.SehaintentadorepresentarestoenlaFigura1.

1https://linuxcontainers.org2https://linuxcontainers.org/lxd/getting-started-cli/3https://www.ubuntu.com/server

Page 2: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

Figura1-EscenariopuenteadoatravésdeLAN

VeráqueLXDhacreadounpuenteenelhost.Normalmentesellamalxdbr0.UnpuenteenelkerneldeLinuxnospermiteporejemploconstruirunpuenteconunPCquetengamúltiplesinterfacesfísicos,aunqueenestecasoloquevamosahaceresqueelpuentetengauninterfazfísico(laNICdelhost,queennuestrocasoenrealidadesvirtual,dadaporVirtualBox)einterfacesvirtualesqueloconectanaloscontenedores.Los puentes en Linux se gestionan con el comando brctl. Puede consultar sudocumentación4paramásdetalle.Ahíverácómodesencilloescrearunpuenteoincluirun interfazenelmismo.Sinotieneesecomandoensuhostdeberá instalar lasbridgeutilities.En uno de los hosts añada al puente creado por LXD el interfaz físico de la internalnetwork.Porejemplo,sisuinterfazsellamaeth0elcomandosería:

#brctladdiflxdbr0eth0Puedeverlosinterfacesquehayenelpuenteconelcomando:

#brctlshowlxdbr0Acontinuaciónlanceuncontenedorenesehost(porejemplounaUbuntu,peronotienemuchaimportancialadistribucióndeLinuxenconcreto).Si ahora mira los interfaces que hay conectados a ese puente encontrará un nuevointerfaz.Esteesuninterfazvirtualcreadoparacomunicaralhostconelcontenedor.Loquehacreadoelhost(debidoalaplantillapordefectodecreacióndecontenedoresenLXD)esunpardeinterfacesdetipovethloscualessoninterfaceslógicosemparejados,talqueloqueseenvíaporunoserecibeporelotro.Unodeesosdosinterfaceseselqueestáviendoenelhost(loveráconelcomandoifconfig)yelotrosehamovidoalnetworknamespace56empleadoporelcontenedor.SicreaunaShellenelcontenedorpodráverelinterfazparejomedianteelcomandoifconfigoelcomandoip.Repitalaconfiguraciónenelsegundohost.AsignedirecciónIPaloscontenedoresqueseencuentrenenlosdoshosts,todasenlamismasubredIP.Deberíapoderhacerpingde

4https://wiki.linuxfoundation.org/networking/bridge5http://man7.org/linux/man-pages/man8/ip-netns.8.html6http://man7.org/linux/man-pages/man7/namespaces.7.html

Page 3: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

un contenedor a otro siguiendo el escenario puenteado tal y como se describe en laFigura1.Puedevereltráficocontcpdump,porejemploenunodeloshosts,yverálastramasEthernetconlasdireccionesMACdelosinterfacesvirtualesdeloscontenedores.EstoestráficoqueestácirculandoporlainternalnetworkcreadaenVirtualBox.Enunescenariodondeloshostsnosonmáquinasvirtualessinoelhostnativodeunservidoreste tráfico estaría circulando por uno de los conmutadores hardware de nuestrainfraestructuradered(eliminedelaFigura1elportátilqueenglobaatodoelescenarioysehaquedadoconunswitchhardwarecondosPCsquecorrenloscontenedores).EnestepuntonohemosconfiguradodirecciónIPaloshosts(lasmáquinasvirtualesenVirtualBox). Si quisiéramos darles dirección IP deberíamos asignarla al interfaz delpuente(lxdbr0),dadoqueelinterfazfísicoestáconectadoalmismo.EstoessimilaraloquehacemosenunswitchCiscocapa2/3dondenoasignamosdirecciónIPal interfazfísico sino que lo hacemos al interfaz lógico de la VLAN porque el interfaz físico estáfuncionandoenmodoconmutaciónencapa2(enmuchosswitchescapa2/3sepuedecambiarelmododefuncionamientodeeseinterfazparaquepaseaseruninterfazcapa3,queseríacomosisacáramosnuestrointerfazdelhostdelpuente).Puntodecontrol:Muestreelescenarioenfuncionamientoalprofesor.

EscenarioenrutadoEste escenario está representado en la Figura 2. El cambio en el dibujo respecto alescenariopuenteadoessutil.Ahoracadahostactúacomounrouter,deformaquesuscontenedores están en una subred IP diferente de los contenedores del otro host. Lainterconexión entre los hosts la hemos mantenido con una internal network deVirtualBox(esdecir,encapa2)perovaldríacualquierconectividadencapa3(esdecir,podríahaber routers entre loshosts).Anivel lógico capa3 las subredesexistentes sevenenlaFigura3.

Figura2-Escenarioenrutado

Page 4: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

Figura3-Topologíacapa3delescenarioenrutado

Partiremosdeloshostssinlaconfiguracióndelescenariopuenteado.Asigne dirección IP a los interfaces físicos de los hosts en la internal network en unasubredpropiaparaella.Deberíanalcanzarseelunoalotro(esdecir,quepuedenhacerseping).LoshostsvanaenrutarasíquehayqueactivarelreenvíodepaquetesIPenellos.Porsimplicidadpondremosunarutapordefectodecadaunoapuntandoalotro.EnunodeloshostsconfiguramosenelpuenteladirecciónIPquequeremosquetengaelrouterenlasubreddeloscontenedores.AsímismoasuscontenedoresenesepuentelesdamosdirecciónIPdeesamismasubredyponemoscomosiguientesaltoensurutapordefectoladirecciónIPdelbridge.En el otro host podríamos hacer una configuración similar y tendríamos resuelto elescenario pero vamos a hacerla ligeramente diferente para practicar con el entornovirtualizado.Novamosautilizarelbridge.Saqueel interfazdelcontenedordelbridge(brctl delif). A continuación, en el host, asigne dirección IP a ese interfaz. Ese es elinterfazdelroutervirtualdeunenlacepuntoapuntoconelcontenedorasíquepuedeemplear una subred con prefijo de 30 bits. Ahora dentro del contenedor configure ladirecciónIPdelotroextremodeesevethconlaotradirecciónIPdelasubredylarutapordefectoapuntandoaladirecciónIPdelrouter.Con eso ya debería funcionar el ping entre los contenedores de los dos hosts. Contraceroute o con ping –R podrá ver los saltos que dan los paquetes. También puedeobservarloscon tcpdump en loshostsyver lasdireccionesMACqueaparecenenesastramas.En la Figura 2 aparece un segundo contenedor en el segundo host. Si ha creado unsegundo contenedor tendrá que sacar también su interfaz del puente de LXD yconfigurarunanuevasubredIPparaeseenlace.Puntodecontrol:Muestreelescenarioenfuncionamientoalprofesor.

EscenarioEthernetsobreGREEnestecasovamosaextenderlaLANcapa2entreloshostsparaqueloscontenedoresseencuentrentodosenlamismaLAN/subredIPperolovamosahacersinpuentearlaconlaLANexternaaloshosts.LoqueharemosseráintroducirlastramasEthernetenuntúnelGREparahacerlasllegardeunhostalotro.

Page 5: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

Figura4-EscenarioEthernetsobreGRE

Muchos túneles GRE se emplean para transportar IP sobre IP, pero eso no impidetransportarotrosprotocolossobreGREyEthernetesunodeellos.Empezamosdenuevoconloshostssinconfigurar.DadoquelacomunicaciónentreloshostsesconpaquetesIPquieredecirquedenuevopodría haber routers entre ellos (aunque en este ejemplo tengamos solo la internalnetwork)ytambiénsignificanecesitamosasignardirecciónIPalosinterfacesexternosdeloshosts.AsignedireccionesalosinterfacesdeloshostsparaquehayaconectividadIPentreellos.Paraelrestodeejemplosupondremosqueunhostes172.16.1.1yelotro172.16.1.2.EncadahosthayquecrearuninterfazvirtualquehagareferenciaaltúnelGRE.EltipodeinterfazenelKerneles“gretap”ylocrearíamosdelasiguienteforma:

#iplinkaddeltunelgretypegretapremote172.16.1.2local172.16.1.1Evidentemente en el otro host las direcciones IP en el comando estarán en el ordencontrario,dadoquedeterminanlosextremoslocalyremotodeltúnel.Conestosehabrácreadounnuevointerfazdenombreeltunegre.Levanteel interfazyañádaloalbridgedeLXDencadahost.AhoraconfigureladirecciónIPdelinterfazdecadacontenedordeformaqueesténenlamismasubredaunqueesténenhostsdiferentes.Conesoyadeberíanalcanzarseelunoalotrosinsaltos IPenrutadosaparentesy las tramasEthernetse transportaránsobreGREsilasmiramoscontcpdumpenelinterfazdeunodeloshosts.Punto de control:Muestre el escenario en funcionamiento al profesor, así comounatrazadetráficoconpaquetesconencapsuladoGRE.

EscenarioEthernetsobreVXLANEn este caso configuraremos un escenario muy similar al anterior pero ahora lacomunicación de las tramas Ethernet entre los hosts se hará sobre UDP, en concretoempleando VXLAN. Esta solución emplea un grupo multicast para el tráfico BUM(Broadcast,Unknownunicast,Multicast,másinformaciónenlosmaterialesdeteoría).Empezamosdenuevoconloshostssinconfigurar.

Page 6: Virtualización con Contenedoresmmc.geofisica.unam.mx/.../practica2.pdf · contenedores y se encontrarán en diferentes hosts. Interconectaremos dichos contenedores mediante varias

Departamento de Automática y Computación

Automatika eta Konputazio Saila

Campus de Arrosadía Arrosadiko Campusa 31006 Pamplona - Iruñea Tfno. 948 169113, Fax. 948 168924 Email: [email protected]

DadoquelacomunicaciónentreloshostsesconpaquetesIPquieredecirquedenuevopodría haber routers entre ellos (aunque en este ejemplo tengamos solo la internalnetwork)y tambiénsignificaquenecesitamosasignardirección IPa los interfacesdelhost.AsignedireccionesalosinterfacesdeloshostsparaquehayaconectividadIPentreellos.CreamoselinterfazencargadodeltráficoVXLAN:

# ip link add vxlan0 type vxlan id <VNI> group <ip_multicast> dev<interfazInternalNetwork>dstport4789

dondeelsignificadodelosparámetroses:“id <grupoDePracticas>” : VXLAN permite crear LANs sobre UDP. Cada LANnecesita su identificador numérico que se llama el VNI (VXLAN NetworkIdentifier)yesunnúmerode24bits(muchosmásquelasVLANsde802.1Q)“group<ip_multicast>”:VXLANempleaungrupomulticast.Seleccioneunodentrodelrangoprivado(239.0.0.0/8).“<interfazInternalNetwork>” : El nombre del interfaz (ej: eth0) conectado a lainternal network (por donde podrá comunicarse con el resto de hosts concontenedoresdeestaVXLAN)

Elvalordelpuerto4789eselreservadoporIANAparaVXLAN7.Añada el interfazVXLAN creado (en este caso lo hemos llamadovxlan0) al puentedeLXDyconfigureladirecciónIPdeuncontenedor.Repita laconfiguraciónenelotrohost,asignandoalcontenedorunadirecciónIPen lamismasubredqueelotro.Pruebaacomunicarunoconotro(unpingporejemplo)yveaenunodeloshostselintercambiodepaquetesenelinterfazenlainternalnetwork.Esinteresante que lance tcpdump antes de empezar la comunicación para poder ver lospaquetesARPsobreelgrupomulticast.Punto de control:Muestre el escenario en funcionamiento al profesor, así comounatrazadetráficoconpaquetesconencapsuladoVXLAN.

3. ContenedoresconDockerParacompletarestaprácticaseplanteaunejerciciomásabierto.FundamentalmentesedeseacompararlasolucióndecontenedoresbasadaenLXDconlasolucióndeDocker8.DockerofrecegrancantidaddedocumentaciónyformassencillasdeprobarloinclusoensistemasoperativosmacOSyWindows.Larecomendaciónesacudiraladocumentaciónyenespeciala los tutorialesdisponiblesensuwebpara teneruna ideade la filosofíadetrásdeDockerydecómoemplearlo.ExistenmuchosmásrecursosenInternetsobreDocker,porejemploenKatacoda9.Porsupuestomuchostutorialesestaránorientadosaherramientas para la gestión de los contenedores y no a llevar a cabo manualmentetodoslospasoscomosehahechoenestaprácticaparaLXD.Lo que se le pide en este apartado es un breve documento (no más de 4 páginas)explicando lasdiferencias entre lasdos solucionesy algunos casosquehayaprobado.Nos interesan principalmente los aspectos relacionados con el networking entrecontenedores.Recuerdeponer referenciaspara todas lasafirmacionesquehagayquenoseanporsupropiaexperiencia.

7https://tools.ietf.org/html/rfc73488https://www.docker.com/9https://www.katacoda.com/courses/docker