Full text
Sis ema dis ibuido pa a la ejecución con olada de
código a bi a io
TRABAJO FIN DE GRADO
GRADO EN INGENIERÍA INFORMÁTICA
Realizado po :
Jona han Sánchez Pa edes
Albe o Velázquez Alonso
Di ec o :
Luis Llana
Codi ec o :
En ique Ma ín Ma ín
Depa amen o de Sis emas In o má icos y Compu ación
Facul ad de In o má ica
Uni e sidad Complu ense de Mad id
Mad id, junio 2017
1
Au o ización de di usión
ie nes, 16 de junio de 2017
Los abajo i man es, alumnos y u o del T abajo Fin de G ado (TFG) en el G ado
en Ingenie ía In o má ica de la Facul ad de In o má ica, au o izan a la Uni e sidad
Complu ense de Mad id (UCM) a di undi y u iliza con ines académicos, no
come ciales y mencionando exp esamen e a su au o el p esen e T abajo Fin de G ado
(TFG): “Sis ema dis ibuido pa a la ejecución con olada de código a bi a io”,
ealizado du an e el cu so académico 2016-2017 bajo la di ección de Luis Llana y la
codi ección de En ique Ma ín en el Depa amen o de sis emas in o má icos y
compu ación. Así mismo au o izan a la Uni e sidad Complu ense de Mad id a que sea
deposi ado en acceso abie o en el eposi o io ins i ucional con el obje o de
inc emen a la di usión, uso e impac o del TFG en In e ne y ga an iza su p ese ación
y acceso a la go plazo.
Jona han Sánchez Pa edes Albe o Velázquez Alonso
2
Ag adecimien os
Que emos ag adece de una mane a especial a nues o di ec o Luis Llana y a
nues o codi ec o En ique Ma ín, po habe nos elegido pa a su p oyec o, con iando
en noso os y acili ándonos un Clús e [11] pa a el desa ollo del p oyec o.
Po o o lado, ambién que emos ag adece a nues os amilia es su implicación
y es a en odo momen o a nues o lado, escuchando y dando su opinión a los
p oblemas que nos iban su giendo.
Po úl imo, ag adece a nues os compañe os y anima con sus espec i os
abajos de in de g ado, es amos muy o gullosos de habe compa ido es e camino
con oso os aun sabiendo que no se á el úl imo camino que eco amos jun os.
3
P ólogo
Todo comenzó en junio del 2016 as la inalización de los exámenes, cuando
nos plan eamos la opción de coge un abajo de in de g ado pa a el 2016/2017. T as
su gi nos a ias ideas y da a ias uel as a la lis a de abajos p opues os, nos
opamos con la dis ibución de sis emas, el cual nos llamó mucho la a ención ya que
son ecnologías con muchas salidas labo ales y en el g ado apenas enemos con ac o
con ellas. Siendo ecnologías con muy poco eco ido, es deci , son ela i amen e
nue as, po ejemplo, Kube ne es ue lanzado en junio del 2014.
Es os ue on los p incipales alicien es pa a que nos pusié amos en con ac o con
Luis pa a inicia es e abajo de in de g ado jun os. T as una p ime a eunión pa a una
oma de con ac o, nos comunican que el sis ema dis ibuido es pa a eemplaza en un
u u o la a qui ec u a de la aplicación Juez de la acul ad de in o má ica.
4
Resumen
La mo i ación o iginal de es e p oyec o es la mi igación de iesgos en el uso de
un juez i ual, que es una aplicación que acili a el en ío, ejecución y e aluación de
eje cicios p ác icos ía In e ne . Los jueces i uales más popula es en en o nos
educa i os son FLOP [27], DOMJudge, Mooshak y Acep aElRe o.
Es e ipo de aplicaciones compilan y ejecu an código a bi a io, y po an o
p ecisan un en o no de ejecución segu o, aislado y en el que pueda limi a se el uso de
ecu sos como memo ia o iempo de CPU. Además, dado que los alumnos pueden
en ia sus p ác icas en cualquie momen o del día, es os sis emas necesi an al a
disponibilidad.
Es e p oyec o p e ende da espues a a es as necesidades c eando un en o no
de ejecución segu o, con olado y de al a disponibilidad pa a la ejecución emo a de
código a bi a io. Pa a ello ecoge emos los equisi os de la aplicación y analiza emos
las dis in as al e na i as a pa i de sus ca ac e ís icas y adecuación a los equisi os.
Finalmen e desa olla emos una aplicación que dé solución a las necesidades indicadas
basándonos en los equisi os y en los esul ados de nues a in es igación.
Palab as cla e
Docke
Kube ne es
Cele y
Redis
Rabbi MQ
TaskQueue
O ques ación
Clús e
Sis ema Dis ibuido
5
Abs ac
The o iginal mo i a ion o his p ojec is isk mi iga ion o he use o a i ual
judge, which is an applica ion ha acili a es sending, unning and g ading p ac ical
assignmen s online. Some popula i ual judges in educa ional en i onmen s a e
FLOP, DOMJudge, Mooshak and Acep aElRe o.
This kind o applica ions compile and execu e a bi a y code, so hey equi e a
unning en i onmen ha is secu e, isola ed and ha can limi esou ce usage such as
memo y o CPU ime. Also, gi en ha s uden s can send hei assignmen s a any ime,
hese sys ems need high a ailabili y.
This p ojec in ends o gi e an answe o hese needs by p o iding a secu e,
con olled and high a ailabili y unning en i onmen o he emo e execu ion o
a bi a y code. To his end we will ga he his applica ion’s equi emen s and we will
analyze he di e en al e na i es based on hei ea u es and adhe ence o
equi emen s. Finally, we will de elop an applica ion ha can sol e he s a ed needs,
based on he equi emen s and he esul s o ou esea ch.
Keywo ds
Docke
Kube ne es
Cele y
Redis
Rabbi MQ
TaskQueue
O ches a ion
Clus e
Dis ibu ed Sys em
6
Índice
1. In oducción .............................................................................................................. 8
1.1. Mo i ación ......................................................................................................... 8
1.2. Obje i os ............................................................................................................ 9
1.3. Es ado del a e ................................................................................................... 9
1.4. Plan de abajo ................................................................................................. 11
1. In oduc ion............................................................................................................. 12
1.1. Mo i a ion........................................................................................................ 12
1.2. Goals ................................................................................................................ 12
1.3. S a e o he A ................................................................................................. 13
2. Requisi os y conside aciones p e ias ...................................................................... 15
3. Tecnologías .............................................................................................................. 16
3.1. Cele y ............................................................................................................... 16
3.2. Rabbi MQ ......................................................................................................... 18
3.3. Redis ................................................................................................................. 19
3.4. Docke .............................................................................................................. 20
3.5. Kube ne es ....................................................................................................... 26
4. Decisiones a qui ec ónicas...................................................................................... 32
4.1. O ques ación .................................................................................................... 32
4.2. Tipo de clien e .................................................................................................. 37
4.2.1. Se icio Web ............................................................................................. 37
4.2.2. Websocke s .............................................................................................. 40
4.2.3. Cele y ........................................................................................................ 42
4.2.4. Rabbi MQ con Redis ................................................................................. 43
4.3. Localización del clien e .................................................................................... 44
4.3.1. Wo ke s den o de los con enedo es ...................................................... 44
4.3.2. Wo ke s ue a de los con enedo es ......................................................... 45
5. Implemen ación ...................................................................................................... 47
6. Manual de ins alación ............................................................................................. 50
7. P uebas de concep o y medidas de iempos .......................................................... 54
8. Conclusiones y abajo u u o ................................................................................. 55
7. Conclusions and u u e wo k .................................................................................. 56
7
8. Con ibución al p oyec o ......................................................................................... 58
9. Bibliog a ía .............................................................................................................. 62
10. Glosa io ................................................................................................................ 63
8
1. In oducción
La compu ación desde sus p incipios ha pasado po muchos cambios, siendo
pione os los g andes compu ado es que e an capaces de ealiza innume ables a eas,
pe o con g an cos e an o en ecu sos como en consumo. En cambio, con el paso del
iempo los o denado es pe sonales han ido cogiendo p o agonismo y a día de hoy son
capaces de mejo a a los g andes compu ado es. De es a e olución su gen los
denominados sis emas dis ibuidos, donde a ios compu ado es pequeños abajan
concu en emen e, comunicándose pa a log a un obje i o. También, aplicando
modula idad a la aplicación sepa ando el in e az de la ejecución.
Es e a ance ambién lo quie e aslada la Facul ad de In o má ica de la
Uni e sidad Complu ense de Mad id, asladando la aplicación del Juez, en conc e o
FLOP, desde un único hos [22], a un sis ema dis ibuido.
Los jueces son u ilizados p incipalmen e en la docencia, es e so wa e acili a a
los p o eso es pone eje cicios a sus alumnos, los alumnos desa ollan el código del
eje cicio y lo en ían pa a su co ección. El juez compila el p og ama y de uel e al
alumno el esul ado de la compilación, a su ez, deja almacenado la no a del alumno.
Algunos jueces au omá icos son FLOP, DOMJudge, Mooshak, Acep aElRe o.
FLOP
Es un so wa e que sigue la me odología Tes D i en Design, el uso de es e p og ama es á
des inado a la p og amación y el ap endizaje. Es e so wa e albe ga p oblemas de
p og amación, pe mi e al p o eso añadi ácilmen e o os nue os y ambién e alúa
au omá icamen e las soluciones en iadas po los alumnos.
1.1. Mo i ación
En los úl imos años se han p oducido a ances en cuan o a la a qui ec u a de los
sis emas, asladándose hacia la dis ibución con el in de epa i la ca ga en los
se ido es, o incluso pa a consumi solo los ecu sos necesa ios de un se icio y paga
solo po ellos, no po oda la máquina. Como el juez au omá ico FLOP, es á
ejecu ándose en un único hos , se quie e aslada a un sis ema dis ibuido.
Un sis ema dis ibuido es un conjun o de compu ado es sepa ados ísicamen e,
pe o conec ados po una ed. El usua io del sis ema pe cibe es a dis ibución desde el
ex e io como un único sis ema.
Pa a acili a la dis ibución y la ejecución de aplicaciones den o del sis ema
dis ibuido se u iliza Docke , y pa a o ques a lo [15] se u iliza án dis in as al e na i as
so wa e, como son Kube ne es, Docke Swa m y Mesos.
15
2. Requisi os y conside aciones p e ias
Pa a pone en con ex o qué se a a desa olla amos a ealiza unas
conside aciones p e ias y los equisi os pa a el buen uncionamien o de es a.
A qui ec u a p eexis en e
La a qui ec u a con la que ac ualmen e se ejecu a el código es un se ido web,
en es e caso Tomca , que ecibe un en ío consis en e en código uen e pa a se
e aluado.
Pos e io men e el se ido en ía de o ma gené ica el código a o a aplicación o
se icio que ejecu a el código y de uel e el esul ado de la ejecución, sea posi i o o
nega i o el se ido almacena es e esul ado y se lo mues a al usua io que en ió el
código.
Requisi os
Pa a el co ec o uncionamien o de la aplicación enemos que cumpli di e sos
equisi os ales como:
o Se lanza una a ea consis en e en código uen e (Py hon en es e caso,
ex ensible a o os lenguajes).
o Se ejecu a en una máquina de un clús e .
o Se ecupe a el esul ado pa a se mos ado o almacenado (el almacenamien o
es á ue a del alcance del p oyec o).
o La ejecución del código debe ealiza se den o de un con enedo Docke .
El con enedo debe einicia se o ce a se después de la ejecución del código, de
al mane a que no haya as o de la ejecución an e io .
Debe con ola se el uso de ecu sos po pa e del con enedo .
Conside aciones sob e la a qui ec u a
Nomencla u a: “dispa che ” es el se ido Tomca que acaba de ecibi el
código de un alumno pa a se e aluado; “ejecu o ” es cada ins ancia que espe a a
ecibi código uen e pa a ejecu a lo y de ol e el esul ado.
Esquema de cola de a eas [5].
Pa a el inicio del sis ema se ealiza on unas p ime as p uebas que consis ie on
en la ecepción de la a ea, c eación de nue o con enedo con olumen compa ido,
ejecución y cie e, odo ello secuencial. T as la p ime a p ueba su gió un p oblema
p incipal: penalización po cada una de las acciones, mucho iempo en e el en ío de la
a ea y la ecepción del esul ado.
16
3. Tecnologías
En es e capí ulo se de allan las ecnologías empleadas pa a el desa ollo del
sis ema dis ibuido.
3.1. Cele y
Cele y es una biblio eca de Py hon y un se icio asociado que implemen an una
cola de a eas.
Una cola de a eas es un ipo especial de cola que se u iliza pa a dis ibui
a eas en e di e en es p ocesos o hilos que se denominan “wo ke s”. Es e ipo de cola
p esen a dos ca ac e ís icas ele an es que la di e encian de una cola gené ica: la
p ime a es que las a eas equie en con i mación po pa e del sis ema que ges iona la
cola, de al o ma que si una a ea no se con i ma se in e p e a que el “wo ke ”
asociado ha su ido un allo y dicha a ea uel e a la cola, quedando disponible pa a
que o o “wo ke ” la p ocese. La segunda ca ac e ís ica es que se suelen u iliza como
un ipo especí ico de sis ema dis ibuido pa a en ia a eas a di e en es p ocesos o
hilos que suelen ejecu a se en di e en es máquinas.
Cele y es á ideado desde un p incipio pa a se ejecu ado en di e en es nodos.
Su modo de uncionamien o es bas an e sencillo, al menos pa a el p og amado : sólo
debe esc ibi una se ie de unciones, que son las a eas que se ejecu a án en las
di e en es máquinas, y lanza el wo ke de Cele y en cada uno de los nodos que ayan
a ejecu a dichas a eas median e el comando “cele y wo ke ”. El p og amado ,
en onces, sólo necesi a á llama a dichas unciones con los pa áme os ele an es pa a
la a ea en cues ión; Cele y dis ibui á el abajo en e odos los nodos disponibles y
de ol e á el esul ado al p og amado .
17
A qui ec u a gene al de Cele y. Fuen e:
h ps://www.pack pub.com/map /book/applica ion_de elopmen /9781783288397/7/
ch07l l1sec45/Unde s anding+Cele y%27s+a chi ec u e
Caben dis ingui se dos lujos den o de cualquie cola de a eas y
especialmen e de Cele y. El p ime o es el mecanismo de dis ibución de las a eas y de
los pa áme os con que se ejecu a án és as, y el segundo es la ecogida de los
esul ados. Cele y no es una he amien a independien e, sino que pa a la
implemen ación de es os lujos u iliza so wa e ajeno, y de hecho pe mi e u iliza
di e en es ecnologías pa a cada uno de los dos mecanismos. La ins alación
ecomendada u iliza Rabbi MQ y Redis, si bien Cele y sopo a o as ecnologías como
MongoDB, CouchDB en incluso bases de da os elacionales.
Pa a la dis ibución de mensajes a los “wo ke s” se u iliza Rabbi MQ. Más
adelan e se desc ibe con más de alle es a ecnología, pe o en esencia es una cola de
mensajes [4], que pe mi e la dis ibución de dichos mensajes desde a ios p oduc o es
hacia a ios consumido es, y que pe mi e implemen a complejos modelos de
dis ibución. En cuan o a los esul ados, és os se almacenan en Redis, que es un
almacén de cla es y alo es.
La ecomendación de es as ecnologías se basa en el hecho de que Rabbi MQ
es un so wa e muy p obado y es able, idóneo pa a la dis ibución de mensajes
olá iles, mien as que Redis pe mi e el almacenamien o y pe sis encia de las
espues as du an e odo el iempo que el clien e necesi e has a ecupe a las, y que
además pe mi e lee a ias eces el mismo da o.
18
A ni el in e no, el p og amado solici a la ejecución emo a de una a ea,
Cele y le de uel e un obje o, que puede en ende se como un “ u u o” o una
“p omesa”. Una ep esen ación de una compu ación que puede o no habe e minado,
y pe mi e al clien e ealiza o as a eas has a que necesi e el esul ado de la ejecución
de la a ea, ya que es e modelo no bloquea el clien e. Una ez que el código clien e
necesi e el esul ado puede solici a lo explíci amen e median e una llamada
bloquean e, que en es e caso sí congela el hilo del clien e has a que el esul ado es á
disponible. Es e modelo de p og amación pe mi e po ejemplo lanza a ias a eas
simul áneas pa a que sean ejecu adas en nodos di e en es y, una ez es én lanzadas
odas, ealiza o as ope aciones independien es y después ecupe a los esul ados
po o den.
3.2. Rabbi MQ
Rabbi MQ es una cola de mensajes. Una cola de mensajes es un mecanismo
pa a el en ío de da os en e hilos o p ocesos, a eces incluso en e p ocesos que se
ejecu an en di e en es máquinas. Todas las colas de mensajes implemen an alguna
a ian e del pa ón publishe /subsc ibe que pod íamos aduci como
publicado /susc ip o en el que uno o a ios hilos p oduc o es gene an da os que son
en iados a uno o a ios hilos consumido es.
PUBLISHER / SUBSCRIBER
El pa ón publishe / subsc ibe , ambién denominado pub/sub, de ine un escena io con
p oduc o es y consumido es en el que los consumido es pueden especi ica que no
desean ecibi odos los da os disponibles sino sólo aquellos que concue dan con un
pa ón de e minado.
Cola de mensajes pub/sub única. Fuen e: h ps://www. abbi mq.com/ge s a ed.h ml
Rabbi MQ pe mi e además implemen a algunos pa ones más a anzados de
dis ibución de mensajes, como en u amien o de mensajes, susc ipción selec i a sólo a
algunos emas o ipos de mensaje o RPC (pe ición/ espues a). Rabbi MQ pe mi e
ambién algunas opciones a anzadas como la pe sis encia de mensajes, polí icas de
segu idad, no i icación de ecepción y la con igu ación explíci a de di e en es
pa áme os como po ejemplo la polí ica de en ega.
19
Pa ón pub/sub de allado. Fuen e: h p://zguide.ze omq.o g/page:all
Es a ecnología implemen a un p o ocolo abie o denominado AMQP pa a la
dis ibución de mensajes, lo que pe mi e en e o as cosas que exis an clien es pa a
casi odos los lenguajes y pla a o mas en uso.
3.3. Redis
Redis es un se icio que almacena en ablas de hashes, conjun os de cla e y
alo (key- alue s o e) [9] en memo ia RAM, el endimien o puede se muy ele ado
debido al almacenamien o en memo ia RAM, compa ándola con los mo o es de
búsqueda de o as bases de da os.
IN-MEMORY DATABASE [8]
Una in-memo y da abase almacena odos sus da os en memo ia. Es o implica que las
consul as son mucho más ápidas al no ene que lee ni esc ibi en un disco, pe o como
con apa ida el iesgo de pé dida de da os es mucho más ele ado al no exis i
pe sis encia de da os.
Algunas bases de da os en memo ia pe mi en el olcado pe iódico de los da os al disco, lo
que educe el impac o de un allo inespe ado a la pé dida de la nue a in o mación
gene ada desde el úl imo olcado.
20
KEY-VALUE STORE
Al con a io que una base de da os elacional, una key- alue s o e almacena pa es cla e-
alo y no pe mi e ealiza búsquedas complejas, o al menos no an complejas como SQL.
Es e ipo de bases de da os son idóneas pa a gua da da os sob e los que se sabe de
an emano que no a a se necesa io ealiza búsquedas complejas, ya que la elocidad de
acceso e inse ción es mucho mayo en compa ación con las bases de da os adicionales.
Especí icamen e, las consul as de ipo JOIN o simila es son imposibles en es e ipo de base
de da os y suelen implica consul a odos los da os y ealiza la búsqueda
p og amá icamen e, lo que implica un mayo cos o en memo ia, e iciencia y es ue zo del
p og amado .
Es a ecnología no es una base de da os elacional po que no pe mi e
ope aciones en e da os como JOINs ni consul as elabo adas median e SQL. Sin
emba go, o ece el almacenamien o no sólo de cadenas de ex o sino de di e en es
ipos de da os abs ac os como lis as, conjun os, ablas y o os ipos más
especializados. Redis se ciñe es ic amen e en es ablece y ecupe a da os sob e sus
es uc u as dejando de lado la búsqueda de elaciones o es icciones.
Redis pe mi e una o ma especializada de pe sis i los da os, así como
eplicación maes o-escla o e incluso clus e ing con ole ancia a allos de los nodos.
3.4. Docke
Docke es un so wa e de i ualización y aislamien o de p ocesos a ni el de
sis ema ope a i o.
Al con a io que las máquinas i uales adicionales, Docke no emula
comple amen e las llamadas al sis ema y po an o no necesi a de ins ucciones
especiales pa a man ene un endimien o acep able. Los p ocesos que se ejecu an
bajo Docke co en di ec amen e en el sis ema ope a i o hos sin so wa e in e medio,
si bien el ke nel se enca ga de aisla dichos p ocesos pa a que no in e ie an con el
es o del sis ema.
21
Di e encia en e máquinas i uales adicionales y Docke , como podemos e docke
unciona con el sis ema ope a i o de la p opia máquina y compa e los bins y lib e ías
en e las aplicaciones del mismo ipo.
Fuen e: h p://www.zdne .com/a icle/wha -is-docke -and-why-is-i -so-da n-popula /
Di e encia en e máquinas i uales adicionales y Docke . En es a imagen al se
aplicaciones di e en es, la única di e encia exis en e es que Docke unciona con el
sis ema ope a i o de la máquina, que lo lanza.
Fuen e: h ps://www.docke .com/wha -docke
22
Uso conjun o de Docke y máquinas i uales. En es a imagen se e cla amen e la
en aja de que Docke se lance con el sis ema ope a i o de la máquina.
Fuen e: h ps://blog.docke .com/2016/04/con aine s-and- ms- oge he /
De momen o Docke sólo unciona con el ke nel de Linux, ya que és e
p opo ciona es ca ac e ís icas idóneas pa a aisla los p ocesos que co en den o de
los con enedo es de Docke . Es as ca ac e ís icas son:
Los g upos de con ol (“cg oups”) que limi an el acceso a ecu sos ales como
memo ia y CPU.
Los espacios de nomb es (“namespaces”), que aíslan los p ocesos que co en
den o de los con enedo es en e sí y de los p ocesos del hos .
Un sis ema de a chi os como O e layFS que no solo aísla los a chi os que se
encuen an den o de un con enedo , sino que pe mi e supe pone los con enidos de
múl iples sis emas de a chi os, p esen ando un sólo sis ema que esul a de la
combinación de los con enidos de odos ellos.
Docke se ges iona a a és de una API que puede se llamada desde las
he amien as de Docke en línea de comandos, desde biblio ecas c eadas
exp esamen e pa a di e en es lenguajes de p og amación, o bien ealizando pe iciones
di ec amen e al endpoin [2] del se icio web que p opo ciona dicha API.
23
A qui ec u a de Docke . Fuen e: h ps://docs.docke .com/engine/docke -o e iew/
Docke sólo puede lanza imágenes c eadas p e iamen e. Exis e un eposi o io
de imágenes c eadas po la comunidad (Docke Hub) y o os eposi o ios man enidos
po di e en es en idades, po ejemplo, Google. Cualquie usua io puede gene a sus
p opias imágenes y subi las a Docke Hub simplemen e c eando un a chi o llamado
Docke ile y ejecu ando unos sencillos comandos que gene an a pa i de es e a chi o
la imagen en la máquina local, que luego puede subi se a un eposi o io. Pa a c ea
una imagen se necesi a un a chi o Docke File. Es e a chi o con iene el sis ema
ope a i o y las he amien as que se indiquen. Pa a cons ui la imagen debemos hace
docke build. Una ez c eado la imagen podemos subi la al eposi o io haciendo
docke push. Si la imagen es á subida podemos desca ga la con docke pull.
Una ez enemos la imagen se puede lanza con docke un y ealiza commi
pa a gua da los cambios. La imagen siguien e explica es os pasos más g á icamen e.
Fuen e: h ps://dzone.com/ e ca dz/ge ing-s a ed-wi h-docke -1
Hay que indica Docke mues a un compo amien o que in e esa des aca a la
ho a de lanza o pa a a ios con enedo es simul áneamen e, como e emos en es e
24
es de iempos de a anque y pa ada de un con enedo en dana, el clús e de
p uebas.
Comando de lanzamien o:
o i in $(seq 20); do
/us /bin/ ime - '%e' docke un -d i -- m --name c$i debian >
/de /null &
Done
Comando de pa ada:
o i in $(seq 20); do
/us /bin/ ime - '%e' docke s op c$i > /de /null &
done
un 1
un 2
un 3
un 4
un 5
s op 1
s op 2
s op 3
s op 4
s op 5
3.84
4.02
6.68
6.83
9.37
9.51
9.88
9.91
10.44
12.19
12.25
12.35
12.44
12.49
12.65
12.69
13.00
13.15
5.31
6.74
8.10
8.25
8.72
8.83
11.72
11.85
11.97
12.08
12.26
12.36
12.44
13.06
13.35
13.44
13.57
13.60
4.34
4.92
5.39
7.88
8.73
8.88
9.21
9.54
11.61
11.77
12.01
12.12
12.22
12.30
12.43
12.48
12.52
12.59
4.38
4.88
6.91
8.20
8.37
8.48
8.96
11.87
11.91
12.15
12.25
12.36
12.49
12.55
12.81
12.96
13.14
13.13
5.38
7.25
8.20
8.48
9.10
9.59
9.76
11.64
11.82
11.86
12.73
12.80
12.86
12.94
13.04
13.11
13.23
13.30
1.92
3.21
5.20
5.60
6.08
6.60
6.79
6.99
7.27
7.43
7.60
7.80
7.95
8.12
8.30
8.52
8.63
8.74
3.58
4.26
4.50
4.96
5.08
6.13
6.98
7.28
7.44
7.60
7.83
7.92
8.21
8.38
8.45
8.57
8.63
8.66
3.83
4.81
4.98
5.43
6.15
6.33
6.44
7.11
7.68
7.84
8.02
8.15
8.29
8.44
8.54
8.62
8.66
8.73
3.43
3.60
3.75
3.92
6.15
6.32
6.86
7.02
7.19
7.27
7.43
7.57
7.69
7.84
7.96
8.06
8.13
8.23
3.70
4.02
4.23
4.47
6.04
6.74
6.91
7.30
7.49
7.60
7.78
7.99
8.10
8.19
8.38
8.54
8.69
8.82
31
Fuen e: h ps://kube ne es.io/docs/ asks/access-applica ion-clus e /web-ui-dashboa d/
32
4. Decisiones a qui ec ónicas
En es e apa ado se ealiza á una in es igación en e las ecnologías más pun e as
que exis en en la ac ualidad, con el in de con es a las siguien es p egun as:
Que o ques ación end á el sis ema dis ibuido.
Tipo de clien e.
Localización del clien e.
4.1. O ques ación
ORQUESTACIÓN
En el ámbi o de los con enedo es so wa e, se en iende como o ques ación a la ges ión
uni icada y au oma izada de dichos con enedo es. El so wa e de o ques ación ecibe una
con igu ación deseada y se enca ga de lle a la a cabo en los nodos que ges iona,
le an ando con enedo es de imágenes especí icas cuando es necesa io y einiciándolos si
es p eciso.
Los sis emas de o ques ación p opo cionan uncionalidades adicionales a la me a ges ión
de con enedo es; po ejemplo, pe mi en expone g upos de con enedo es como un único
se icio, así como balancea la ca ga en e ellos.
Pa a la elección de qué ecnología se u iliza á pa a o ques a el sis ema
dis ibuido se ealiza á una in es igación exhaus i a de las ecnologías del me cado
ac ual.
Pa a una p ime a oma de con ac o se ealiza á una b e e desc ipción, basada
en las uncionalidades de las ecnologías más pun e as.
Las siguien es imágenes han sido omadas de las diaposi i as de la página:
h ps://es.slidesha e.ne /Ka lIsenbe g/con aine -o ches a ion-wa s
El p ime pun o que se a a analiza es la p og amación, la capacidad de cada
ecnología en la escalabilidad, esu ección, despliegue con inuo y colocación de los
nodos.
33
Como se puede obse a en es e aspec o la ecnología más comple a es
Kube ne es, ya que iene odos los pun os incluyendo la esu ección de nodos que es
uno de los equisi os del sis ema, o as dos ecnologías con bas an es pun os a a o ,
son Swa m y Mesos/Ma a hon. El siguien e pun o a analiza es la adminis ación de
se icios, la cual pa a nues o sis ema dis ibuido es muy impo an e, ya que en los
equisi os se pidió que se con ola án ecu sos como el consumo de CPU, limi a el
espacio de disco o el iempo de ejecución de una máquina.
34
En es a imagen podemos e cómo la ecnología que más se amolda a nues as
pe iciones es Mesos con Ma a hon y jus o de ás de ella Kube ne es y Swa m de
nue o, po lo an o, es as es ecnologías cogen muchos pun os pa a se elegidas. Po
úl imo, amos a analiza la adminis ación de se icios, como, po ejemplo, la ca ga
balanceada y las e ique as.
De nue o las ecnologías que más pun os a su a o ienen son Kube ne es y
Mesos con Ma a hon.
Pa a comple a la in es igación e emos dos g á icas más sob e las ecnologías
más usadas en el me cado ac ualmen e y a con inuación desc ibi emos una a una cada
ecnología. La p ime a de ellas son las ecnologías que o ques an, en p ime luga , si
nos ijamos en la línea de azul cla o, se obse a que las más u ilizadas en p oducción
son Kube ne es y Mesos. En cambio, si nos ijamos en la línea de azul oscu a, se
obse a que los po cen ajes son mayo es en no p oducción, dando a en ende que es
una ecnología en c ecimien o, oda ía es á en p uebas.
35
Fuen e: h ps:// henews ack.io/ ns- esea ch-p esen -s a e-con aine -o ches a ion/
En es a segunda imagen podemos obse a las he amien as de p og amación,
compañe as de las de o ques ación, en p ime luga , se encuen a Kube ne es y el
compañe o de Mesos, Ma a hon. También, des aca Swa m que es dis ibuido po
Docke .
36
Fuen e: h ps:// henews ack.io/ ns- esea ch-p esen -s a e-con aine -o ches a ion/
Docke Swa m
Es la solución más simple, iene ins alada con Docke Engine, ya que es una
dis ibución o icial de docke , a pa i de la e sión 1.12. Es compa ible con la API de
Docke , pe o se a a de una ecnología muy poco madu a pa a en o nos de
p oducción.
Mesos con Ma a hon
Se a a de una mezcla de ecnologías donde Ma a hon es el enca gado de la
o ques ación del sis ema y Mesos, en cambio, lanza los con enedo es de imágenes de
Docke , ambién podemos in e cambia Mesos po Kube ne es, c eando una
ecnología po en e pe o pesada. Se a a de una ecnología muy madu a, al espec o
de las demás. Pe o iene un consumo muy ele ado de ecu sos.
Ya n
Ya n es o o ges o de sis emas dis ibuidos, pe o ue c eado con la idea de
u iliza se pa a Hadoop.
37
Nomad
Nomad es la ecnología más ecien e de odas, con menos de un año. Es la más
simple iene un bina io que puede ac ua como clien e y se ido , pe o al se an jo en
apenas hay documen ación, muy poca di usión y asume que se a a u iliza con
Vag an .
4.2. Tipo de clien e
En es e apa ado se oma la decisión del ipo de clien e que se a a emplea
pa a el desa ollo del sis ema dis ibuido y las di e en es posibilidades exis en es.
4.2.1. Se icio Web
Una al e na i a pa a en ia p og amas a los nodos que los an a ejecu a y
pos e io men e ecupe a los esul ados es median e mic o-se icios [1], u ilizando la
a qui ec u a REST. Es e sis ema es ela i amen e sencillo de implemen a ya que en
casi cualquie lenguaje exis en biblio ecas que pe mi en la c eación de un se icio web
y la conexión al mismo, y además el p o ocolo u ilizado, HTTP o HTTPS, es público,
abie o y ex emadamen e es able, lo que pe mi i ía la in e ope abilidad de o ma
muy sencilla en caso de que se quisie a ex ende o modi ica el p og ama en un u u o.
MICROSERVICIOS Y REST
La a qui ec u a de mic ose icios es un pa ón po el cual una aplicación se di ide en
módulos o agmen os que se comunican en e sí median e pe iciones HTTP. La en aja
p incipal es que obliga a desa olla sis emas con bajo acoplamien o, a cos a de añadi un
cie o e aso po las pe iciones HTTP y la se ialización de los mensajes.
El p o ocolo HTTP se desa olló pa a la en ega de hipe ex o y no pa a la comunicación
en e módulos o p ocesos, po lo que se desa olló un ma co concep ual pa a la
adap ación de HTTP a la comunicación en e módulos. Es e ma co se llamó REST,
ep esen a ional s a e ans e , y es ablece una co elación en e comandos HTTP y
ope aciones en e módulos. En REST, las pe iciones GET, POST, PUT y DELETE equi alen a
los concep os c ea , lee , ac ualiza y bo a .
En es e pun o se nos plan ean dos al e na i as: podemos ene un se ido en
el nodo maes o y clien es en los nodos ejecu o es, o al e és. Es as al e na i as ienen
cada una sus p os y con as, que pasa emos a explo a .
38
Tal ez la al e na i a más inmedia a sea ene un mic o-se icio en el nodo que
ecibe las pe iciones de los usua ios y que los nodos que ejecu an las a eas solici en
los da os a dicho se icio (GET) y pos e io men e de uel an los esul ados al mismo
(POST). El p oblema p incipal de es a a qui ec u a es que, aunque el se ido no enga
a eas que en ia los clien es deben consul a pe iódicamen e si hay nue as a eas que
ejecu a , c eando una mínima ca ga esidual en el sis ema.
O o p oblema de i ado del an e io es el hecho de que lleguen múl iples
a eas mien as odos los clien es es án do midos, en cuyo caso dichas a eas no
comenza án a ejecu a se has a que llegue el momen o de que los clien es uel an a
solici a a eas al se ido , po lo que dependiendo la con igu ación de los delays
puede a da se un iempo conside able en se i una pe ición de un usua io. C eemos
que es e enómeno se da ía con cie a ecuencia según los pa ones ípicos de uso de
es a aplicación: los alumnos ienden a en ia en masa las a eas pa a se e aluadas el
úl imo día e incluso la úl ima ho a. Hay que deci que es e p oblema no se p esen a ía
con nume osas solici udes de usua ios en espe a, sino sólo con un lujo bajo pe o
cons an e de a eas pendien es.
ESPERA ACTIVA Y PUSH / PULL [6]
En un escena io en el que hay p oduc o es y consumido es, el e en o en el que un
consumido solici a da os a un p oduc o se denomina pull, mien as que, si es el
p oduc o el que inicia la comunicación de los da os disponibles a los consumido es o les
señaliza dicho e en o de alguna o ma, se denomina push. Cada una de las dos a ian es
iene di e en es ca ac e ís icas de endimien o.
Cuando ningún p oduc o iene da os disponibles y ampoco dispone de ningún mé odo
de señaliza a los consumido es la p esencia de nue os da os, los clien es suelen ene
que ealiza espe a ac i a, ambién denominada polling [21]. És a consis e en que los
consumido es solici an da os a los p oduc o es en bucle, lanzando an as pe iciones como
el sis ema pe mi e po lo que el endimien o del sis ema se deg ada. Una al e na i a es
espe a un iempo de e minado has a lanza la siguien e pe ición, lo que hace que el
endimien o del sis ema disminuya.
En con as e, si exis e algún mé odo pa a señaliza la p esencia de da os, los
consumido es pueden bloquea y mien as se encuen an bloqueados no consumen
ecu sos. Los mé odos de espe a más comunes son a iables de condición si sólo se
necesi a espe a en e hilos, o bien las llamadas del sis ema selec o epoll si se necesi a
sinc onización en e p ocesos, e incluso en e di e en es hos s.
39
En la imagen podemos e el modelo g á ico de un mic o-se icio, donde el
se ido es á en el nodo hos y los nodos ejecu o es son los clien es.
La o a al e na i a u ilizando una a qui ec u a REST [3] se ía a la in e sa: el
nodo que ecibe las solici udes de los usua ios se ía el clien e, y los nodos que ejecu an
las a eas se ían los se ido es. Es a a qui ec u a apa en emen e ex aña end ía la
eno me en aja de no depende del delay del clien e, ya que las a eas se ían en iadas
a los clien es disponibles a medida que ue an llegando sin depende de e asos
a i iciales, pe o end ía a ias des en ajas. La p ime a, el nodo “dispa che ” debe ía
man ene una lis a de nodos ejecu o es disponibles, po ejemplo, con ando con un
mic o-se icio en el que se egis a a cada nodo al a anca y/o al queda disponible
después de habe ejecu ado una a ea. Es o complica ía la implemen ación y obliga ía
al p og amado a implemen a un mecanismo pa a lle a el egis o de nodos
disponibles y a eas pendien es, así como con ola aquellas a eas en iadas, pe o no
inalizadas.
40
En la imagen podemos e el modelo g á ico de un mic o-se icio, donde el
se ido es á en los nodos ejecu o es y el nodo hos es el clien e.
4.2.2. Websocke s
WEBSOCKET [23]
Websocke es una ecnología de comunicación bidi eccional desa ollada p ime amen e
pa a na egado es web, pe o que en ealidad es independien e de HTTP. El p o ocolo de
Websocke es ablece una conexión pe manen e en e clien e y se ido que pe manece
abie a du an e oda la sesión, lo que implica un mejo endimien o, pe o ambién un
mayo consumo de ecu sos en el lado del se ido .
Los mo i os pa a el desa ollo de es e p o ocolo son p incipalmen e dos: po un lado,
pe mi i al se ido en ia da os al clien e sin pe ición p e ia, y po el o o lado e i a que
el clien e enga que es ablece una nue a conexión cada ez que desee ealiza una
pe ición al se ido .
Una modi icación de la implemen ación median e mic o-se icios es la
u ilización de websocke s. Aunque no es un p o ocolo an p obado como HTTP
47
5. Implemen ación
Llegado al pun o de la implemen ación hay que decidi qué ecnologías an a se
u ilizadas.
Pa e común
La comunicación en e el dispa che y los ejecu o es es la p ime a decisión que
debe oma se, y en es e caso la al e na i a en e se icios web y una cola de mensajes
es sencilla de di imi en nues o caso. La cola de mensajes iene una en aja
de e minan e: pe mi e que los clien es se bloqueen en espe a en luga de ene que
ealiza espe a ac i a de o ma mucho más sencilla pa a el desa ollado , lo que
conlle a menos espacio pa a come e e o es.
Elegida la opción de la cola de mensajes, se plan ea la u ilización de una opción
que acili a su u ilización aún más si cabe: Cele y. Es a biblio eca es ele an e ya que
nos o ece ein en os au omá icos si el mensaje no se con i ma, iene la opción de
con i ma an es y después de la ejecución, además p opo ciona una cola de a eas,
Rabbi MQ, pa a que los wo ke ecojan las pe iciones que el mas e ha dejado y una
base de da os NoSQL, Redis, pa a que los wo ke s almacenen sus espues as una ez
acabada la compilación del código. Además, Cele y nos o ece un balanceo de ca ga
basado en una a qui ec u a in e na de “p e e ch”, que consis e en cada wo ke se
queda con más a eas de la que es á ejecu ando, siendo ú il pa a e i a un á ico
cons an e, no ienen que pedi una nue a a ea cada ez que e mina una. Cele y se
a a de una lib e ía de Py hon po lo que es amos limi ando el sis ema a la u ilización
de un solo lenguaje. También en es e caso las en ajas son cla as, si bien hay que ene
muy en cuen a el mayo incon enien e: el código debe á cambia se pa a exclui Cele y
si se decide no u iliza Py hon o no llama lo desde o o lenguaje.
PREFETCH
Cuando un clien e ob iene a eas de una cola puede hace lo de una en una o omando
a ias a la ez, lo que se denomina p e e ching. La p incipal en aja de es a écnica es que,
sob e odo con mensajes de g an amaño o que necesi an ela i amen e mucho iempo
pa a se leídos y/o decodi icados, se educe la la encia de lec u a al solapa la ejecución
de una a ea con la lec u a de o as de la cola.
El p e e ch si e además como un mé odo udimen a io de balanceo, e i ando que un
sólo nodo acapa e odas las a eas.
La siguien e decisión es la localización del clien e. Como ya hemos is o,
podemos lanza un núme o de con enedo es den o de los cuales se ejecu a un clien e
en cada uno, o bien podemos lanza un solo clien e que se enca gue de lanza y ce a
48
con enedo es, así como de inse a el código en cada uno de ellos, ejecu a lo y oma
el esul ado cada ez que llegue una pe ición. La decisión en es e caso es más
complicada, y pa a oma la nos hemos basado en benchma ks del iempo necesa io
pa a lanza un wo ke de Cele y así como pa a c ea un nue o con enedo y ce a lo.
Un wo ke de Cele y sin opciones especiales a da un segundo en a anca , núme o
que pe manece es able, aunque se lancen 20 wo ke s a la ez, aunque se puede
educi has a unos 0.2 segundos con las opciones “--wi hou -gossip --
wi hou -mingle”. Sin emba go, el lanzamien o de un con enedo a ía
dependiendo del núme o de lanzamien os concu en es que se in en en hace . Un
único lanzamien o a da de 0.5 a 0.8 segundos, pe o si se u ilizan es hilos
independien es que lanzan con endo es a la ez, el iempo máximo de lanzamien o
sube has a los 5 segundos. Se p oduce un enómeno simila en el cie e de los
con enedo es: el cie e de un sólo con enedo es casi ins an áneo pe o el cie e en
pa alelo de a ios implica un e aso de un segundo.
Es as ci as nos lle an a diseña un mecanismo que nos pe mi a ene múl iples
con enedo es abie os y u iliza los cuando lleguen pe iciones; lo que se suele
denomina “p e o k”. Es e sis ema lanza y cie a los con enedo es en un hilo
independien e y no obs aculiza ni bloquea el hilo p incipal, po lo que los iempos de
lanzamien o y cie e quedan enmasca ados, siemp e que en el caso del lanzamien o
haya con enedo es disponibles en el pool cuando llega una pe ición.
La cons ucción de es e pool de con enedo es conlle a la exis encia de un único
clien e po hos , no un clien e po con enedo .
La úl ima decisión es el uso de he amien as de o ques ación pa a ges iona las
imágenes que con ienen los clien es. En es e pun o indicamos dos a ian es, debido a
que el código ha sido desa ollado pa a sopo a ambas. La decisión sob e cuál
a ian e escoge depende de las ca ac e ís icas de las máquinas en las que se a a
ejecu a es e sis ema, así como de las necesidades de uso.
Va ian e A: con o ques ación
En p ime luga , decidi cuál a a se la ecnología que se enca gue de o ques a
el clús e , debido a la can idad de documen ación y es a en el anking de ecnologías
más usadas an o en el sec o emp esa ial, como en el sec o pa icula . Kube ne es es
la elegida pa a o ques a el sis ema, dicho clús e iene un nodo mas e y 5 nodos
wo ke , en los que se debe ins ala Docke y ejecu a el código que nos p opo ciona el
gi de Kube ne es pa a pode lanza lo, dependiendo si el nodo es wo ke o mas e . En
es e paso se descub ió un p oblema, el nodo mas e enía ocupado el pue o 8080, y
kube ne es, po de ec o, se le an a en el pue o 8080, gene ando con lic os y no
dejando que se inicie co ec amen e. Como solución se desca gó el código de
Kube ne es, se modi icó y se ol ió a subi pa a que se lanza á en el pue o 28080.Una
ez ins alado Kube ne es u iliza Flannel [24] pa a la conexión en e nodos. A la ho a de
lanza un con enedo Kube ne es y Docke ienen una polí ica de cie e p ema u o,
49
que es á elacionada con la “Docke es a policy”, que con iene cua o polí icas de
einicio, “no” (po de ec o), “on- ailu e”, “unless-s opped” y “always”. Si el cie e del
con enedo se p oduce an es de 10 segundos desde el a anque, se conside a como un
allo y se aplica un “exponen ial backo ” [12], que uel e a in en a lanza el
con enedo .
EXPONENTIAL BACKOFF
En gene al, exponen ial backo es un algo i mo que disminuye la ecuencia de cie a
ope ación has a encon a un pun o acep able.
Kube ne es implemen a exponen ial backo en el einicio de un con enedo . Si un
con enedo ecién lanzado se cie a an es de 10 segundos, K8s in e p e a que ha habido
algún ipo de e o y e asa su einicialización en luga de e ec ua la inmedia amen e,
espe ando más iempo cada ez pa a el einicio de dicha máquina has a llega al núme o
máximo de ein en os.
Una ez mon ado el sis ema dis ibuido hay que ajus a el sis ema a los
equisi os, con la con igu ación ulimi de docke a la ho a de lanza las imágenes,
añadiendo a la ho a de lanza las imágenes con algunas ea u es, “--cpus” pa a
con ola el núme o de CPUs que que emos usa pa a lanza la imagen, “--s op-
imeou ” iempo en segundos que end á de ida el con enedo . Uno de los
equisi os consis e en que cada con enedo sólo puede ejecu a un código pa a e i a
p og amas malin encionados, la pa ada y ea anque implican man ene da os en el
sis ema de a chi os, po lo que la única solución es el cie e de cada con enedo
después de ejecu a un código y lanza uno nue o pa a cada pe ición.
Va ian e B: sin o ques ación
O a opción es ene el mismo sis ema, pe o sin un o ques ado , ya que Cele y
unciona como Kube ne es: en el nodo mas e se ejecu a Cele y y dis ibuye sus a eas
en e los nodos wo ke s en los que se ha ejecu ado el código de Cele y Wo ke .
50
6. Manual de ins alación
En es e capí ulo se a a de alla una guía pa a la ins alación de un sis ema
dis ibuido pa a la ejecución segu a de código. La ins alación de Kube ne es es
opcional, se puede desplega Cele y igualmen e.
LINUX CGROUPS
Cg oups es una ca ac e ís ica del ke nel de Linux cuyo in es con ola y limi a los
ecu sos asignados a g upos de a eas. En casi odos los sis emas ope a i os ipo Unix
exis e un mecanismo, ulimi , usado pa a limi a ecu sos po cada p oceso. En con as e,
Cg oups pe mi e aplica es os lími es a un g upo de p ocesos, que en el caso de Docke
es á compues o po los p ocesos que se ejecu an cen o de cada con enedo . Además,
hay un mayo núme o de lími es que se pueden impone a es os p ocesos.
Cg oups es á di idido en módulos que pueden eni po de ec o ac i os o no ac i os
dependiendo de la dis ibución de Linux que es emos u ilizando. En el caso conc e o de
es as ins ucciones nos hemos basado en Debian, po lo que pa a pode u iliza algunas de
las ca ac e ís icas de Cg oups y que Docke uncione co ec amen e, hay que pasa cie os
pa áme os al ke nel a a és del ca gado de a anque.
Kube ne es
P e io a la ins alación debemos ene un nodo mas e y an os nodos wo ke s
como que amos.
Ins alación de Kube ne es, pa a es e paso necesi a emos se oo .
1. P ime o en odas las máquinas modi icamos el g ub.
Edi a : nano /e c/de aul /g ub
Pone : GRUB_CMDLINE_LINUX="cg oup_enable=memo y"
Ejecu a : upda e-g ub2
Reinicia : eboo
2. En odas las máquinas (Sólo si se u ie a que epe i los pasos, la p ime a ez
no es necesa io).
docke s op $(docke ps -a -q) # Pa a odas las ins ancias
docke m $(docke ps -a -q) # Elimina ins ancias
docke mi $(docke images -q) # Elimina imagenes
51
3. En la máquina Mas e .
gi clone h ps://gi hub.com/kube ne es/kube-deploy
cd kube-deploy/docke -mul inode
expo K8S_VERSION= 1.5.6
expo IP_ADDRESS=192.168.134.1 # La IP de es e equipo en la ed
./mas e .sh
4. En odas las máquinas Wo ke .
gi clone h ps://gi hub.com/kube ne es/kube-deploy
cd kube-deploy/docke -mul inode
expo K8S_VERSION= 1.5.6
expo MASTER_IP=192.168.134.1 # La IP del mas e
expo IP_ADDRESS=192.168.134.1 # La IP de es e equipo en la ed
./mas e .sh
5. Kubec l, Sólo en el nodo Mas e .
cu l -LO h ps://s o age.googleapis.com/kube ne es-
elease/ elease/$(cu l -s
h ps://s o age.googleapis.com/kube ne es-
elease/ elease/s able. x )/bin/linux/amd64/kubec l
chmod +x ./kubec l
m ./kubec l /us /local/bin/kubec l
6. Comp obación, en el nodo Mas e que es el único que iene ins alado Kubec l.
kubec l clus e -in o #En mas e nos debe ía da oda la
in o mación del Clús e
kubec l ge nodes #En mas e pa a consul a los nodos
52
7. Lanza un eplica ion con olle desde un yaml.
C eamos un iche o, po ejemplo, en la u a:
/op /kube ne es/examples/nginx-pod.yaml
Con enido del a chi o:
apiVe sion: 1
kind: Replica ionCon olle
me ada a:
# Nomb e del Replica ion Con olle
name: my-nginx
spec:
eplicas: 1
selec o :
app: nginx
empla e:
me ada a:
name: nginx
labels:
app: nginx
spec:
con aine s:
- name: nginx
image: nginx
po s:
- con aine Po : 80
es a Policy: Always
Pa a lanza el pod:
kubec l c ea e – /op /kube ne es/examples/nginx-pod.yaml
53
Clien e
Es p e equisi o ene Docke ins alado an o en el se ido como en los clien es. En los
clien es, además, debe á ins ala se la biblio eca Cele y con sopo e pa a Redis:
pip3 ins all cele y[ edis]
El lanzamien o del clien e es muy sencillo. Sólo es necesa io ob ene el código en el
se ido y en los clien es, po ejemplo, clonando el eposi o io que lo con iene:
gi clone h ps://gi hub.com/ elazq/execu o -se ice.gi
Deben lanza se los se icios auxilia es (Rabbi MQ y Redis) en el se ido :
cd execu o -se ice
./s a -se ices.sh
En los clien es, en cambio, ha de ejecu a se el wo ke :
cd execu o -se ice
cele y wo ke -A cele y_wo ke
54
7. P uebas de concep o y medidas de iempos
Hemos c eado un p og ama de p ueba en Py hon que gene a el alo N de la
sucesión de Fibonacci usando el algo i mo ecu si o, sin ningún ipo de op imización.
Pa a es a p ueba calcula emos la posición 48, que en un po á il a da es o:
$ ime py hon3 ib.py
63245986
eal 0m23.552s
use 0m23.442s
sys 0m0.040s
Hemos gene ado 200 ca pe as simulando el en ío de p ác icas al se ido .
Todas ellas se encuen an bajo la ca pe a “code es ”.
Lanzamos el comando:
ime py hon3 execu o -se ice/cele y_clien _mul i.py code es
ib.py
y ob enemos como esul ado:
eal 3m22.149s
use 0m0.704s
sys 0m0.084s
55
8. Conclusiones y abajo u u o
Es e p oyec o in oluc a muchas ecnologías di e en es ales como
con aine ización, o ques ación, comunicación en e p ocesos (IPC), p o ocolos de
se ialización, colas de mensajes o almacenes de alo es cla e.
La ecnología cen al de es e p oyec o, la con aine ización con Docke , se es á
ace cando ápidamen e a la madu ez, aunque algunas peculia idades oda ía se
man ienen. Su supues a c eación ins an ánea no es así en nues as p uebas,
p obablemen e debido a algún cuello de bo ella en el daemon Docke . Hay
p eocupaciones sob e el ni el de aislamien o que p opo ciona y si es su icien e pa a
de ene a un a acan e de e minado. Pe o, po o o lado, su uncionalidad y
endimien o es inigualable. La i ualización eal impone una sob eca ga pesada que
Docke elimina casi po comple o.
La o ques ación, po el con a io, sigue siendo inmadu a. Incluso la ecnología
más p ome edo a, Kube ne es, que es desa ollada po Google y iene el mayo
núme o de usua ios, ca ece de documen ación y acilidad de uso. El concep o
subyacen e es sólido y sin duda se con e i á en un luga común en unos años, pe o en
es e momen o es á implemen ación oda ía es á limi ada a de o os equipos con
su icien es ecu sos pa a man ene y depu a es a nue a ecnología.
IPC es una ecnología muy madu a. Hay a ias implemen aciones con di e en es
conjun os de ca ac e ís icas y ca ac e ís icas de endimien o, y la documen ación es,
en la mayo ía de las al e na i as, abundan e. Nues a elección, Cele y, es á bien
documen ada y iene muchas opciones de con igu ación pa a ajus a su endimien o, e
incluso puede abaja con muchas colas de mensajes y bases de da os di e en es, pa a
la dis ibución y almacenamien o de a eas.
Es e abajo puede se ampliado o u ilizado como base pa a a ias o as ideas.
El más di ec o se ía una pla a o ma de p ueba pa a nue os lenguajes de p og amación
o DSL (lenguajes especí icos de dominio), pa a que los usua ios pudie an se
p esen ados con una in e az web donde pudie an esc ibi o ca ga sus p uebas y
hace las e alua po el sis ema.
Es e p oyec o ambién pod ía se u ilizado pa a implemen a una de las úl imas
endencias en compu ación: un p o eedo sin se ido . Al igual que PaaS (pla a o ma
como se icio) e IaaS (in aes uc u a como se icio), algunos p o eedo es como
Amazon y Google es án comenzando a o ece un se icio basado en e en os donde
los desa ollado es suben su código y se ejecu a en espues a a una llamada ex e na
al como un usua io que hace una solici ud a una página web o una base de da os que
es á siendo modi icada. Es os se icios sólo se ac u an po el uso de la CPU y po lo
an o no equie en ene una máquina i ual uncionando en odo momen o, po lo
que es más en able pa a cie os ipos de ca gas. O a en aja es que es os se icios se
56
escalan au omá icamen e pa a el desa ollado , po que el código se puede ejecu a en
cualquie núme o de máquinas en pa alelo.
7. Conclusions and u u e wo k
This p ojec in ol es many di e en echnologies such con aine iza ion,
o ches a ion, in e -p ocess communica ion (IPC), se ializa ion p o ocols, message
queues o key- alue s o es.
The cen al echnology o his p ojec , con aine iza ion wi h Docke , is quickly
app oaching ma u i y, albei some qui ks s ill emain. I s pu po ed ins an c ea ion is,
in ou es s, no so, p obably due o some bo leneck in he Docke daemon. The e a e
conce ns abou he le el o isola ion i p o ides and whe he i is enough o s op a
de e mined a acke . Bu , on he o he hand, i s unc ionali y and pe o mance is
unpa allelled. Real i ualiza ion imposes a hea y o e head ha Docke elimina es
almos comple ely.
O ches a ion, in con as , is s ill imma u e. E en he mos p omising
echnology, Kube ne es, ha is de eloped by Google and has he la ges numbe o
use s, is se e ely lacking in documen a ion and ease o use. The unde lying concep is
sound and will no doub become commonplace in a ew yea s’ ime, bu igh now his
implemen a ion is s ill cons ained o de ops eams wi h enough esou ces o
main ain and debug such a new echnology.
IPC is a e y ma u e echnology. The e a e se e al implemen a ions wi h
di e en ea u e se s and pe o mance cha ac e is ics, and documen a ion is, in mos
al e na i es, plen y. Ou choice, Cele y, is well-documen ed and has many
con igu a ion op ions o adjus i s pe o mance and i can e en wo k wi h many
di e en message queues and da abases, o ask dis ibu ion and s o age.
This wo k can be ex ended o used as he basis o se e al o he ideas. The
mos s aigh o wa d one would be a es ing pla o m o new p og amming languages
o DSLs (domain-speci ic languages), so ha use s could be p esen ed wi h a web
in e ace whe e hey could w i e o upload hei es s and ha e hem e alua ed by he
sys em.
This p ojec could also be used o implemen one o he newes ends in
compu ing: a se e less p o ide . In he same ashion as PaaS (pla o m as a se ice)
and IaaS (in as uc u e as a se ice) some p o ide s such as Amazon and Google a e
beginning o o e an e en -d i en se ice whe e de elope s upload hei code and i
ge s execu ed in esponse o an ex e nal e en such as a use making a eques o a
web page o a da abase being modi ied. These se ices a e only billed o CPU usage
and he e o e do no equi e ha ing a i ual machine unning a all imes, hus making
hem mo e cos -e ec i e o ce ain ypes o loads. Ano he ad an age is ha hese
63
h ps://www.you ube.com/wa ch? =C_u4_l84ED8
Kube ne es s Docke Swa n
h ps://pla o m9.com/blog/compa e-kube ne es- s-docke -swa m/
Guide Kube ne es
h ps://deis.com/blog/2016/kube ne es-illus a ed-guide/
Kube ne es a chi ec u e and use
h ps://medium.com/@i ma ke place.ne /kube ne es-101-12ad2424d2 1#. 65x0chdm
h p://blog.kube ne es.io/2016/09/kube ne es-1.4-making-i -easy- o- un-on-
kube en es-anywhe e.h ml
h ps://deis.com/blog/2016/kube ne es- he-ha d-way/
Kube ne es pods
h p://kube ne es.io/docs/use -guide/p oduc ion-pods/
Kube ne es con aine
h p://kube ne es.io/docs/use -guide/pods/single-con aine /
FLOP
h p://dl.acm.o g/ci a ion.c m?id=2401807
10. Glosa io
[1] Mic o-se icio: La a qui ec u a de mic ose icios es un pa ón po el cual
una aplicación se di ide en módulos o agmen os que se comunican en e sí
median e pe iciones HTTP.
[2] Endpoin : Es el des ino inal de una conexión o aplicación.
[3] REST: Es un es ilo de a qui ec u a so wa e pa a sis emas hipe media
dis ibuidos como la Wo ld Wide Web.
[4] Cola de mensajes: Una cola de mensajes iene ca ac e ís icas adicionales a
una cola no mal. Su unción es la dis ibución de mensajes en e p ocesos, y
pe mi e que los clien es bloqueen cuando la cola es á acía. Tiene o as
ca ac e ís icas in e esan es como pe mi i que los clien es se susc iban sólo a
cie os mensajes y no a odos ( e publishe / subsc ibe ).
64
[5] Cola de a eas: Una cola de a eas es, al menos concep ualmen e, una
ex ensión de la cola de mensajes que además equie e que, al ecibi se una
a ea, los clien es lo no i iquen.
[6] Push / Pull: En un escena io en el que hay p oduc o es y consumido es, el
e en o en el que un consumido solici a da os a un p oduc o se denomina pull,
mien as que, si es el p oduc o el que inicia la comunicación de los da os
disponibles a los consumido es o les señaliza dicho e en o de alguna o ma, se
denomina push. Cada una de las dos a ian es iene di e en es ca ac e ís icas
de endimien o.
[7] Fi s come, i s se e: El p ime o en llega es el p ime o en sali , como en
una ila.
[8] In memo y da abase: Almacena odos sus da os en memo ia. Es o implica
que las consul as son mucho más ápidas al no ene que lee ni esc ibi en un
disco, pe o como con apa ida el iesgo de pé dida de da os es mucho más
ele ado al no exis i pe sis encia de da os.
[9] Key- alue s o e: Al con a io que una base de da os elacional, una key-
alue s o e almacena pa es cla e- alo y no pe mi e ealiza búsquedas
complejas, o al menos no an complejas como SQL
[10] Polí ica (de einicio): “Docke es a policy”, que con iene cua o polí icas
de einicio, “no” (po de ec o), “on- ailu e”, “unless-s opped” y “always”.
[11] Clús e : Es un g upo de máquina que es án elacionadas y se comunican en
busca de un obje i o.
[12] Exponen ial backo : Si el cie e del con enedo se p oduce an es de 10
segundos desde el a anque, se conside a como un allo y se aplica un
“exponen ial back-o ”, que uel e a in en a lanza el con enedo .
[13] P e o k: Cuando los ecu sos ins anciados son p ocesos, a la acción de
c ea a ios p ocesos y deja los en espe a se suele llama p e-lanzamien o o
p e o k.
65
[14] Balanceo: Es un concep o usado en in o má ica que se e ie e a la écnica
usada pa a compa i el abajo a ealiza en e a ios p ocesos, o denado es,
discos u o os ecu sos.
[15] O ques ación: En el ámbi o de los con enedo es so wa e, se en iende
como o ques ación a la ges ión uni icada y au oma izada de dichos
con enedo es.
[16] Con aine : Los con enedo es no son más que “cajas” aisladas con lo
esencial pa a pode ejecu a un de e minado p og ama o aplicación. Eso se
puede en ende como una máquina i ual lige a, en ez de las comple as y
pesadas con las que se abaja en la i ualización comple a.
[17] Demonio: se icio o p og ama esiden e es un ipo especial de p oceso
in o má ico no in e ac i o, es deci , que se ejecu a en segundo plano en ez de
se con olado di ec amen e po el usua io.
[18] Pool: Un conjun o de ecu sos disponibles pa a el sis ema que es án
espe ando a se u ilizados se denomina pool.
[19] TAR: Se e ie e en In o má ica a un o ma o de a chi os ampliamen e
usado en en o nos UNIX, iden i icados po el su ijo de a chi o . a
[20] Dispa che , execu o , ask: El nodo Dispa che es el nodo que ecibe la
a ea “ ask”, y la manda a un nodo execu o pa a que la ejecu e.
[21] Espe a ac i a, poll: Queda se en espe a cons an emen e has a ecibi la
pe ición.
[22] Nodo, hos : Un hos o an i ión es un o denado que unciona como el
pun o de inicio y inal de las ans e encias de da os. Comúnmen e desc i o
como el luga donde eside un si io web. Un an i ión de In e ne iene una
di ección de In e ne única (di ección IP) y un nomb e de dominio único o
nomb e de an i ión (hos name).
66
[23] Websocke : Es una ecnología de comunicación bidi eccional desa ollada
p ime amen e pa a na egado es web, pe o que en ealidad es independien e
de HTTP.
[24] Flannel: Es una ed i ual que p opo ciona una sub ed a cada hos .
Kube ne es asume que cada pod iene una IP única y en u able den o del
clús e . Reduce la complejidad de ealiza asignaciones de pue o.
[25] K8s: Es una ab e iación de Kube ne es de i ada de las 8 le as de
“ube ne es” en 8.
[26] RKT: Fue c eado as encon a di e sos allos de segu idad en Docke ,
es e nue o sis ema o ece segu idad en las imágenes del con enedo , p e iene
a aques de escalado de p i ilegios, más lexibilidad en la publicación de
imágenes y po abilidad a o os sis emas de “con aine ización”.
[27] FLOP: Es un so wa e que sigue la me odología Tes D i en Design, el uso
de es e p og ama es á des inado a la p og amación y el ap endizaje. Es e
so wa e albe ga p oblemas de p og amación, pe mi e al p o eso añadi
ácilmen e o os nue os y ambién e alúa au omá icamen e las soluciones
en iadas po los alumnos.