Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad
Abstract
Diseño e instalación de un servicio web de tienda virtual en un entorno de computación en clúster para proporcionar alta disponibilidad y balanceo de carga del mencionado servicio. La infraestructura requerida para este despliegue será virtual, utilizándose como plataforma de virtualización KVM. Las tareas se organizan en : 1.Tareas para la creación de un clúster de balanceo de carga donde una máquina será la encargada de recibir las peticiones de los clientes y de redirigirlas a los servidores web según la carga de éstos. 2. Tareas para la creación de un clúster de alta disponibilidad para que en caso de fallo siempre haya un servidor de base de datos que pueda atender a las peticiones de los servidores web.
Full text
Trabajo de fin de grado Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Autor: Eloy García Martínez Tutor: Carmelo Rubén García Rodríguez Catedrático de Escuela Universitaria Ciencias de la Computación e Inteligencia Artificial Las Palmas de Gran Canaria Julio 2015
“A todas las personas que, en mayor o menor medida, han contribuido a que hoy sea quien soy”
Agradecimientos Quiero aprovechar este documento para agradecer a todas aquellas personas que a lo largo de la realización de estos estudios me han ayudado y apoyado. Agradezco a cada uno de mis profesores todo lo que me han enseñado a lo largo de esta carrera. En especial a mi tutor, por darme la oportunidad de poder realizar este trabajo con él y por implicarse de la manera en la que lo ha hecho. Del mismo modo quiero mostrar mi agradecimiento a toda mi familia por todo el apoyo dado durante estos años. Gracias a mis padres por todo el sacrificio que han realizado, sin ellos esto no hubiese sido posible. Por último gracias a la persona más especial en mi vida, mi mujer, la que me acompaña día a día y me aguanta con su infinita paciencia. A todos ellos, muchísimas gracias.
Resumen El presente proyecto consiste en el diseño e instalación de un servicio web de tienda virtual ejecutándose en un entorno de computación en clúster con el objetivo de proporcionar alta disponibilidad y balanceo de carga del mencionado servicio. Toda la infraestructura requerida para este despliegue será virtual, utilizándose como plataforma de virtualización KVM. Las tareas realizadas en este proyecto se organizan en dos bloques: Tareas para la creación de un clúster de balanceo de carga donde una máquina será la encargada de recibir las peticiones de los clientes y de redirigirlas a los servidores web según la carga de éstos. Tareas para la creación de un clúster de alta disponibilidad de manera que aseguramos que en caso de fallo siempre habrá un servidor de base de datos que pueda atender a las peticiones de los servidores web. Abstract This project involves the design and installation of a virtual shop web service running on cluster computing environment with the aim of providing high availability and load balancing of said service. All necessary infrastructure for this deployment will be virtual, using as virtualization platform KVM. The tasks performed in this project are organized in two blocks: Tasks for creating of a load balancing cluster where a machine will be responsible for receiving requests from clients and redirect them to web servers according the load of these. Tasks for creating of a high-availability cluster so that we ensure that in case of failed there will always be a database server that can respond to requests from web servers.
Índice 1. Estado actual y objetivos.................................................................................................... 13 1.1. Estado actual. .............................................................................................................. 13 1.1.1. Modelos de virtualización. .................................................................................. 13 1.1.2. Modelos de computación paralelos o distribuidos. ............................................ 16 1.1.3. Tipos de clúster. .................................................................................................. 17 1.1.4. Sistemas de almacenamiento distribuidos. ........................................................ 18 1.2. Objetivos. .................................................................................................................... 20 1.2.1. Objetivos generales del trabajo. ......................................................................... 20 1.2.2. Objetivos personales. .......................................................................................... 20 2. Competencias. .................................................................................................................... 21 2.1. CII01. ............................................................................................................................ 21 2.2. CII02. ............................................................................................................................ 21 2.3. CII04. ............................................................................................................................ 21 2.4. CII18. ............................................................................................................................ 21 2.5. TFG01. ......................................................................................................................... 22 3. Aportaciones. ...................................................................................................................... 23 4. Normativa y legislación. ..................................................................................................... 24 4.1. Ámbito internacional. .................................................................................................. 24 4.1.1. OCDE. ................................................................................................................... 24 4.1.2. Naciones Unidas. ................................................................................................. 24 4.2. Ámbito Europeo. ......................................................................................................... 24 4.3. Ámbito nacional. ......................................................................................................... 26 4.4. Normativas ISO. ........................................................................................................... 26 4.5. Licencias Software Libre. ............................................................................................. 27 5. Metodología y plan de trabajo........................................................................................... 28 5.1. Metodología. ............................................................................................................... 28 5.2. Plan de trabajo. ........................................................................................................... 28 6. Análisis. ............................................................................................................................... 29 6.1. Obtención de requisitos. ............................................................................................. 29 6.2. Actores. ....................................................................................................................... 29 6.3. Casos de uso. ............................................................................................................... 30 6.4. Análisis de las alternativas de balanceo de carga. ...................................................... 32 6.5. Análisis de los modos de balanceo de carga. .............................................................. 33 6.6. Análisis de alternativas de tienda virtual. ................................................................... 36
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 16 Virtualización de aplicaciones. Las aplicaciones son ejecutadas encapsuladas sobre el sistema operativo de manera que aunque creen que interactúan con él de la manera habitual, en realidad no lo hacen, sino que lo hacen bien con una máquina virtual de aplicación o con algún software de virtualización. Virtualización de escritorio. Consiste en la manipulación de forma remota del escritorio de usuario (aplicaciones, archivos, datos), que se encuentra separado de la máquina física, almacenado en un servidor central remoto en lugar de en el disco duro del computador local. 1.1.2. Modelos de computación paralelos o distribuidos. Ahora que ya hemos visto qué tipos de virtualización hay, vamos a conocer los principales modelos de computación distribuidos que existen: Cluster computing. Este tipo de computación consiste en un grupo de computadores de relativo bajo coste conectados entre sí mediante un sistema de red de alta velocidad y un software que realiza la distribución de la carga de trabajo entre los equipos. Por lo general, este tipo de sistemas cuentan con un centro de almacenamiento de datos único. En función del objetivo perseguido tenemos los siguientes tipos de clúster: Alto rendimiento: Son clústeres cuyo objetivo de diseño es la de ejecutar tareas que requieren de una gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos. Alta eficiencia: Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clúster no es considerado un gran problema. Grid computing. La computación en grid o en malla es un nuevo paradigma de computación distribuida en el que todos los recursos de un número indeterminado de computadoras son englobados para ser tratados como un único superordenador de manera transparente. Estas computadoras englobadas no están conectadas o enlazadas firmemente, es decir no tienen por qué estar en el mismo lugar geográfico.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 17 Cloud computing. La computación en la nube es un término general para denominar cualquier cosa que tenga que ver con la provisión de servicios de hospedaje a través de Internet. Estos servicios se dividen en tres grandes categorías: • Infraestructura como servicio (IaaS). • Plataforma como servicio (PaaS). • Software como servicio (SaaS). Los servicios en la nube tienen tres características bien diferenciadas: • La tarificación se realiza en función del uso. • El servicio es elástico, ya que el usuario puede usar tanto como quiera y en el momento que lo desee. • El servicio es gestionado en su totalidad por el proveedor. 1.1.3. Tipos de clúster. En este apartado analizaremos las características de los distintos tipos de clúster que existen en la actualidad. Clúster de alto rendimiento. Un clúster de alto rendimiento es un conjunto de ordenadores que está diseñado para dar altas prestaciones en cuanto a capacidad de cálculo. Los motivos para utilizar un clúster de alto rendimiento son: El tamaño del problema por resolver El precio de la máquina necesaria para resolverlo. Por medio de un clúster se pueden conseguir capacidades de cálculo superiores a las de un ordenador más caro que el costo conjunto de los ordenadores del clúster. Clúster de balanceo de carga. Un clúster de balanceo de carga o de cómputo adaptativo está compuesto por uno o más ordenadores (llamados nodos) que se encargan de capturar las peticiones de servicio que recibe el clúster, y los ordenadores cuya función es procesar las peticiones que los anteriores les reparten. Las características más destacadas de este tipo de clúster son: Se puede ampliar su capacidad fácilmente añadiendo más ordenadores al clúster. Robustez. Ante la caída de alguno de los ordenadores del clúster el servicio se puede ver mermado, pero mientras haya ordenadores en funcionamiento, éstos seguirán dando servicio.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 18 Clúster de alta disponibilidad. Un clúster de alta disponibilidad consiste en un conjunto de ordenadores conectados entre sí de tal manera que cuando se produce un fallo del hardware o de las aplicaciones de alguna de las máquinas del clúster, el software de alta disponibilidad es capaz de arrancar automáticamente los servicios que han fallado en cualquiera de las otras máquinas del clúster. Las principales características que tiene son: Se puede ampliar su capacidad fácilmente añadiendo más ordenadores al clúster. Robustez. Ante la caída de alguno de los ordenadores del clúster, el servicio migra a un ordenador de respaldo, por lo que se garantiza la integridad de la información y además evita molestias a los usuarios, que no tienen por qué notar que se ha producido un problema. 1.1.4. Sistemas de almacenamiento distribuidos. Las necesidades de almacenamiento de datos se han ido incrementando continuamente tanto para usuarios como en las empresas. Cualquier información es susceptible de ser digitalizada y almacenada; por tanto se necesitan manejar mayores volúmenes de datos y al mismo tiempo se hace necesario mantener alguna copia adicional de la información más sensible. Los sistemas de almacenamiento distribuido permiten centralizar la información, realizar una mejor gestión del espacio y crear sistemas redundantes y de alta disponibilidad. Para ello se establece una red dedicada de alto rendimiento para conectar directamente los dispositivos de almacenamiento, lo que permite a los archivos y datos ser directamente transferidos entre dispositivos de almacenamiento y maquinas cliente, saltándose el tradicional cuello de botella del servidor y el control de la red. De esta forma se consigue separar el tráfico normal de la red del tráfico relacionado con los medios de almacenamiento. DAS (Direct Attached Storage). Es el método tradicional de almacenamiento y el más sencillo. Consiste en conectar el dispositivo de almacenamiento directamente al servidor o estación de trabajo, es decir, físicamente conectado al dispositivo que hace uso de él. NAS (Network Attached Storage). Los SAN como su nombre lo indica son dispositivos dedicados de almacenamiento en red, que utilizan los recursos de la redes LAN para prestar el servicio de almacenamiento. Estos dispositivos integran un sistema operativo que ha sido específicamente desarrollado para cumplir con el propósito de alojar y compartir archivos dentro de una red LAN. Las características avanzadas que proporcionan los NAS permiten establecer políticas de acceso y redundancia sobre los datos con el objeto de mantener la seguridad de los mismos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 19 SAN (Storage Area Network). Las SAN son sistemas dedicados de almacenamiento en red que acceden a los recursos mediante conexiones directas entre el servidor y los dispositivos de almacenamiento de manera que no causan impacto sobre la LAN. El alojamiento y compartición de archivos se realiza mediante un disco virtual que conforman todos los dispositivos que pertenecen a la red y es en esté, donde la información se consolida y se comparte entre los diferentes servidores. Un aspecto importante de las SAN es que al estar los datos distribuidos entre los dispositivos de la red, estos tienen una alta disponibilidad y redundancia en caso de fallo en cualquier componente del sistema. RAID (Redundant Array of Independent Disks). Son sistemas de almacenamiento basados en discos duros que tienen la capacidad de actuar colectivamente para replicar los datos en distintas unidades, con el fin de garantizar la disponibilidad y la persistencia de la información almacenada en cada uno de los discos que lo conforman.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 20 1.2. Objetivos. 1.2.1. Objetivos generales del trabajo. El objetivo principal de este trabajo es crear un entorno de alta disponibilidad y balanceo de carga para desplegar un servicio de tienda virtual utilizando para ello la plataforma de virtualización KVM. Las tareas que se van a llevar a cabo para cumplir dicho objetivo son las siguientes: Desarrollar el catálogo de requisitos del sistema a construir. Elaborar el diseño de la solución. Instalar y configurar los elementos virtuales de infraestructura: computo, almacenamiento y de red requeridos. Instalar y configurar los componentes software que permiten el cómputo en clúster con el objetivo de proporcionar servicios en alta disponibilidad y balanceo de carga. Diseño y creación de los distintos elementos que posibilitan la ejecución del servicio web de tienda virtual en alta disponibilidad. Diseño y creación de los distintos elementos que posibilitan la ejecución del servicio web de tienda virtual con balanceo de carga. Diseño y creación del servicio web de tienda virtual. 1.2.2. Objetivos personales. El Trabajo de Fin de Grado pretende ser la muestra de los conocimientos y habilidades adquiridas a lo largo de toda la titulación. Asimismo, la elaboración de éste será una buena oportunidad para: Consolidar y aumentar los conocimientos sobre las tecnologías de la virtualización Consolidar y aumentar los conocimientos sobre las tecnologías para la alta disponibilidad. Consolidar y aumentar los conocimientos sobre las tecnologías para el balanceo de carga.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 21 2. Competencias. A continuación se describen las competencias que han sido cubiertas durante la realización de este proyecto, indicando en cada caso cómo han sido satisfechas. 2.1. CII01. “Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente”. A lo largo de la elaboración de este documento, más concretamente en los capítulos 6, 7, 8 y 9, ha quedado demostrada la capacidad para analizar las necesidades del cliente con el objetivo de diseñar, desarrollar y evaluar una solución que cumpla con todas ellas. 2.2. CII02. “Capacidad para planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social”. A la hora de realizar un proyecto, la planificación debe afrontarse de manera adecuada para garantizar el cumplimiento de los plazos de entrega y que la calidad del producto sea el deseado. Puesto que durante este proyecto se ha realizado una buena planificación, se ha podido concluir en la fecha planificada ajustándose a la definición de éste. 2.3. CII04. “Capacidad para elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y normativas vigentes”. En el anexo se adjunta el pliego de condiciones técnicas para la contratación de los servicios para la puesta en marcha de un servicio web de tienda virtual en alta disponibilidad. 2.4. CII18. “Conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional”. En el capítulo 4 Normativa y legislación se indican las principales normativas y leyes que afectan a este proyecto tanto a nivel nacional como a nivel europeo e internacional. Principalmente son aquellas relacionadas con el comercio electrónico, protección de datos personales y firma electrónica.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 22 2.5. TFG01. “Ejercicio original a realizar individualmente y presentar y defender ante un tribunal universitario, consistente en un proyecto en el ámbito de las tecnologías específicas de la Ingeniería en Informática de naturaleza profesional en el que se sinteticen e integren las competencias adquiridas en las enseñanzas”. Esta competencia queda cubierta con la elaboración de este Trabajo de Fin de Grado y su posterior presentación ante el tribunal evaluador.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 23 3. Aportaciones. Este proyecto pretende crear un entorno de alta disponibilidad y balanceo de carga donde las organizaciones puedan desplegar sus tiendas virtuales. Es de vital importancia que estos servicios estén disponibles de forma continuada ya que cualquier tipo de interrupción afectaría a sus ventas y a lo que es más importante, a su imagen. La solución elegida tiene las siguientes características: Económica: Al hacer uso de la virtualización, las empresas pueden elevar las tasas de utilización de sus servidores haciendo un uso más eficiente de sus recursos y del capital de la empresa. Por tanto se necesitarán menos máquinas físicas, lo que conlleva un menor consumo energético de forma directa e indirectamente ya que disminuye el gasto en refrigeración. Además también se ahorra en espacio ya que menos servidores implican un menor tamaño del Data Center. A parte, durante todo el desarrollo se ha utilizado software libre, lo que ha abaratado considerablemente la solución elegida. Escalable: En caso de que el número de usuarios de la tienda virtual aumentara hasta hacer insuficientes los recursos actuales de alguno de los servicios (servidores web o servidores de base de datos), éstos se pueden ampliar de forma muy sencilla y rápida, basta con clonar la máquina virtual que contiene dicho servicio y añadírsela al clúster. Fiable: Existe suficiente infraestructura para garantizar que si falla alguna de las máquinas que ofrecen el servicio, éste siga estando disponible, haciendo que los usuarios no se percaten en ningún momento de lo ocurrido.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 24 4. Normativa y legislación. En este capítulo veremos las principales normativas y leyes vigentes que afectan a este proyecto. Se comenzará dando una visión en el ámbito internacional conociendo las leyes y recomendaciones de organismos como la OCDE y Naciones Unidas. Luego pasaremos al ámbito europeo para terminar en nuestro propio país. 4.1. Ámbito internacional. Desde la perspectiva jurídica, apenas existe legislación internacional. Lo que sí existen son directrices y recomendaciones promovidas por la Organización para la Cooperación y el Desarrollo Económicos (OCDE) y Naciones Unidas (ONU). 4.1.1. OCDE. Directrices de la OCDE sobre protección de la privacidad y flujos transfronterizos de datos personales. Directrices de la OCDE para la Protección de los Consumidores de Prácticas Comerciales Transfronterizas Fraudulentas y Engañosas. Recomendación del consejo de la OCDE relativa a los lineamientos para la protección al consumidor en el contexto del comercio electrónico. 4.1.2. Naciones Unidas. Ley Modelo de la CNUDMI sobre Comercio Electrónico (1996). Directrices para la regulación de los archivos de datos personales informatizados. 4.2. Ámbito Europeo. En Europa durante los últimos años se ha ido conformando un marco normativo que regula las obligaciones que deben cumplir tanto las administraciones públicas como los organismos privados en el uso y gestión de la información. Las principales directivas y reglamentos que afectan a este proyecto son: Reglamento (UE) nº 910/2014 del Parlamento Europeo y del Consejo, de 23 de julio de 2014, relativo a la identificación electrónica y los servicios de confianza para las transacciones electrónicas en el mercado interior y por la que se deroga la Directiva 1999/93/CE. Reglamento (UE) Nº 611/2013 de la Comisión, de 24 de junio de 2013, relativo a las medidas aplicables a la notificación de casos de violación de datos personales en el marco de la Directiva 2002/58/CE del Parlamento Europeo y del Consejo sobre la privacidad y las comunicaciones electrónicas.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 25 Directiva 2009/136/CE del Parlamento Europeo y del Consejo, de 25 de noviembre de 2009, por la que se modifican la Directiva 2002/22/CE relativa al servicio universal y los derechos de los usuarios en relación con las redes y los servicios de comunicaciones electrónicas, la Directiva 2002/58/CE relativa al tratamiento de los datos personales y a la protección de la intimidad en el sector de las comunicaciones electrónicas y el Reglamento (CE) no 2006/2004 sobre la cooperación en materia de protección de los consumidores. Directiva 2006/24/CE, del Parlamento Europeo y del Consejo de 15 de marzo de 2006, sobre la conservación de datos generados o tratados en relación con la prestación de servicios de comunicaciones electrónicas de acceso público o de redes públicas de comunicaciones y por la que se modifica la Directiva 2002/58/CE. Directiva 2002/58/CE del Parlamento Europeo y del Consejo de 12 de julio de 2002, relativa al tratamiento de los datos personales y a la protección de la intimidad en el sector de las comunicaciones electrónicas (Directiva sobre privacidad y las comunicaciones electrónicas). Directiva 2002/22/CE del Parlamento Europeo y del Consejo, de 7 de marzo de 2002, relativa al servicio universal y los derechos de los usuarios en relación con las redes y los servicios de comunicaciones electrónicas (Directiva servicio universal). Directiva 2002/20/CE, del Parlamento Europeo y del Consejo, de 7 de marzo de 2002, relativa a la autorización de redes y servicios de comunicaciones electrónicas (Directiva de autorización). Directiva 2002/19/CE, del Parlamento Europeo y del Consejo, de 7 de marzo de 2002, relativa al acceso a las redes de comunicaciones electrónicas y recursos asociados, y a su interconexión (Directiva de acceso). Directiva 2000/31/CE, del Parlamento Europeo y del Consejo, de 8 de junio de 2000, relativa a determinados aspectos jurídicos de los servicios de la sociedad de la información, en particular el comercio electrónico en el mercado interior (Directiva sobre el comercio electrónico). Directiva 95/46/CE del Parlamento Europeo y del Consejo de 24 de octubre de 1995 relativa a la protección de las personas físicas en lo que respecta al tratamiento de datos personales y a la libre circulación de estos datos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 32 6.4. Análisis de las alternativas de balanceo de carga. En este capítulo vamos a analizar las alternativas que existen a la hora de realizar el balanceo de carga y veremos las ventajas y desventajas que tienen para al final decantarnos por una. Linux Virtual Server: Constituido por un servidor altamente escalable y de alta disponibilidad. Balance de carga mediante nodo dedicado con sistema operativo GNU/Linux. Clúster completamente transparente al usuario final. Mecanismo para que el clúster funcione con una IP pública. Permite el manejo de protocolos como HTTP, FTP, DNS, entre otros. Piranha: Implementación de software de alta disponibilidad. Interfaz web para control completo del clúster. Posee herramientas para su monitorización. Balance mediante direcciones IP. Permite el manejo de protocolos como HTTP, FTP, DNS, entre otros. Ultramonkey: Permite balanceo de carga y alta disponibilidad. Incluye monitorización de servidores reales y nodos balanceados. Permite el manejo de protocolos como HTTP, FTP, DNS, entre otros. Usado desde clústeres de dos nodos hasta grandes sistemas. Conga: Sólo permite alta disponibilidad. Interfaz web para control completo del clúster. Fácil integración con los clústeres. Tiene paquetes para el almacenamiento compartido.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 33 Después de haber analizado algunas de las herramientas disponibles para poder implementar el balanceo de carga y la alta disponibilidad del sistema de información, nos hemos decantado por las soluciones de RedHat: Conga para la creación de un clúster de bases de datos en alta disponibilidad y Piranha para la creación del clúster de servidores web con balanceo de carga. 6.5. Análisis de los modos de balanceo de carga. Ahora vamos a analizar los métodos que usan los servidores virtuales creados con Piranha para balancear las peticiones de los usuarios. Servidor virtual usando NAT: NAT (Network Address Translation) es una técnica utilizada para que una máquina reciba información dirigida a otra y ésta pueda reenviarla a quien la solicitó inicialmente. Para ello la máquina que recibe la información, en forma de paquetes, deberá reescribir los paquetes sustituyendo su propia dirección con la de la máquina que realizó la petición. Una vez reescrito el paquete de la forma correcta el balanceador se encargará de enviar los paquetes por la
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 34 interface adecuada para que le lleguen a quien procesará la petición. Cuando el servidor responda, lo hará al balanceador y éste reescribirá el paquete, otra vez, poniendo en los paquetes la dirección del cliente que solicitó la información. Servidor virtual usando IP Tunneling: Utilizando NAT teníamos un cuello de botella en el balanceador ya que tiene que reescribir y distribuir los paquetes del cliente al servidor y viceversa. Utilizando IP Tunneling el balanceador únicamente tendrá que hacerse cargo de las peticiones de los clientes y enviarlas a los servidores, siendo estos mismos los que responderán a los clientes. De esta forma el balanceador de carga puede manejar más nodos, es decir el servicio es más escalable. Una vez el balanceador de carga tiene el paquete determina si pertenece a uno de los servicios que tiene balanceados. De ser así encapsula el paquete en otro paquete y se lo envía al servidor de destino. Es este el que se encarga de responder al cliente directamente sin pasar por el balanceador. El balanceador guarda una tabla de conexiones y cuando le llega un paquete determina si ya existe una conexión abierta y de ser así que servidor real es el que está sirviéndola para enviarle el paquete. Los servidores deberán estar configurados para trabajar con IP Tunneling (encapsulation) ya que cuando el balanceador recibe un paquete para uno de los servidores este lo encapsula en un datagrama IP y lo manda a uno de los servidores. Cuando el servidor lo recibe tendrá que obtener el datagrama y responder directamente al cliente sin pasar por el balanceador con lo cual los servidores tendrán que estar conectados tanto al balanceador como a los clientes. Servidor virtual usando Direct Routing: Al igual que en IP Tunneling el balanceador sólo gestionará las peticiones del cliente hacía el servidor con lo cual es una solución altamente escalable. La dirección virtual (VIP) es compartida por el balanceador y los servidores. De esta manera el balanceador recibe las peticiones y las envía a los servidores que procesan las peticiones y dan servicio directamente a los clientes. En esta solución es necesario que alguna la de las interfaces del balanceador y de los servidores estén en el mismo segmento físico de red ya que el balanceador de carga cambiará su dirección física, MAC, en la trama por la dirección física de uno de los servidores que tendrá un alias con la dirección VIP. El balanceador guarda una tabla de conexiones y cuando le llega un paquete determina si ya existe una conexión abierta y de ser así que servidor real es el que está sirviéndola para enviarle el paquete.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 35 Hemos estado haciendo referencia a cómo el balanceador distribuirá las peticiones entre los servidores, pero para que esta distribución sea efectiva ha de ser planificada de alguna forma. A la hora de compilar el núcleo en el balanceador tendremos que escoger que algoritmos vamos a utilizar para hacer el balanceo de carga. Los algoritmos más interesantes son los siguientes: Round-Robin: Este algoritmo es el más simple y lo que hace es distribuir las peticiones de manera alternada entre los servidores. Esta distribución es muy sencilla pero presupone que todas las peticiones van a ser equivalentes, en términos de carga, para el servidor, algo que en la realidad dista mucho de ser cierto; o que la capacidad de procesamiento de los servidores es la misma. Weighted Round-Robin: Este algoritmo permite un aprovechamiento mejor del clúster cuando hay máquinas con diferentes capacidades de procesamiento, de esta forma a las máquinas con mayor capacidad de procesamiento se les dará una mayor prioridad para responder a las peticiones de los clientes y el balanceador distribuirá la carga entre los servidores teniendo en cuenta su prioridad. Least-Connection: Con este algoritmo las peticiones se enviarán al servidor que menos conexiones este sirviendo en ese momento. Si la capacidad de procesamiento de los servidores es similar este algoritmo distribuirá la carga de forma óptima entre todas las máquinas del clúster. Sin embargo si las capacidades de procesamiento varían mucho, la carga no será repartida de forma ecuánime ya que la carga se repartirá según el número de conexiones abiertas en ese momento y no sobre la carga real de cada máquina. Weighted Least-Connection: A cada servidor se le asigna una prioridad según su capacidad de procesamiento y aquellos con más prioridad atenderán más peticiones, es decir tendrán más conexiones abiertas.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 36 6.6. Análisis de alternativas de tienda virtual. En la actualidad existen cantidad de soluciones para crear nuestra tienda virtual. A continuación se usa la herramienta “Trends” de Google para conocer la tendencia de cinco de las más importantes.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 37 Ahora vamos a realizar una comparativa para decidir cuál se ajusta mejor a las necesidades de los usuarios. Se ha decidido que se instalará Prestashop debido a: Su diseño profesional y actual. Es uno de los más fáciles de usar. Es muy rápido, según el último estudio realizado por el equipo de Prestashop, los test de Google a día de hoy le dan como la aplicación ecommerce más rápida. Cuenta con una considerable comunidad en español. Es el software que más se usa en España y ha sido galardonado como mejor aplicación para comercio electrónico en 2010 y 2011, consecutivamente, por lo que Prestashop es una apuesta segura. Los requisitos necesarios para realizar su instalación son: Sistema operativo: Windows, Mac o Linux. Servidor web: Apache 1.3, Apache 2.x, Nginx o Microsoft IIS. PHP 5.2 o superior. MySQL 5.0 o superior instalado con una base de datos creada. Opcionalmente: En la configuración PHP o memory_limit = "64M". o file_max_upload_size = "16M". Extensiones PHP opcionales: o GD. o cURL. o SimpleXML. o SOAP.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 38 7. Diseño. El objetivo de esta etapa es la especificación de la arquitectura del sistema y del entorno tecnológico que le va a dar soporte, junto con la definición detallada de los componentes del sistema de información. 7.1. Diseño de la topología del clúster.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 39 El sistema de información estará formado por siete máquinas virtuales: TFG_AdminClusterBD: Administrador del clúster de base de datos en alta disponibilidad. TFG_ServerBD1: Servidor de base de datos activo. TFG_ServerBD2: Servidor de base de datos de respaldo. TFG_LoadBalancer1: Balanceador activo. TFG_LoadBalancer2: Balanceador de respaldo. TFG_WebServer1: Servidor web. TFG_WebServer2: Servidor web. Los usuarios a través de Internet accederán al servicio de tienda virtual Prestashop, usando para ello la IP virtual del servicio. Estas peticiones serán recibidas por el balanceador activo que se encargará de repartir las peticiones según la cantidad de trabajo que tengan los servidores web. En caso de que este balanceador falle, existe uno de respaldo que se encargará de asumir sus funciones. Los servidores web atacarán al servidor de base de datos activo para acceder a la información que estará almacenada en la base de datos alojada en la cabina de discos. Existe un servidor de base de datos de respaldo que seguirá ofreciendo el servicio cuando el activo falle. 7.2. Identificación de los subsistemas de diseño. El sistema se ha estructurado en dos subsistemas más pequeños y simples. La razón de esta estructuración es que de esta manera se simplifica la construcción, prueba y mantenimiento del sistema. Por un lado tendremos el clúster de servidores web con balanceo de carga. Este subsistema lo compondrán las siguientes máquinas: TFG_LoadBalancer1 TFG_LoadBalancer2 TFG_WebServer1 TFG_WebServer2
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 40 Por otro lado está el clúster de servidores de base de datos en alta disponibilidad compuesto por: TFG_AdminClusterBD TFG_ServerBD1 TFG_ServerBD2 7.3. Diseño de la infraestructura de red. El objetivo de esta tarea es identificar y diseñar la red de comunicaciones del sistema de información, la cual está pensada para que sea lo más simple posible. Serán necesarias tres redes distintas: Red aislada TFG_RedAislada0 (10.22.122.0): Necesaria para las comunicaciones del clúster de alta disponibilidad. Red del laboratorio (10.22.146.0): Necesaria para que los servidores de base de datos puedan acceder a la cabina de discos. Implica poner la interfaz de red en modo bridge. Red aislada NAT (192.168.122): Necesaria para comunicar todas las máquinas. Necesita que el sistema anfitrión tenga activado el ip_forward e implica poner la interfaz de red en modo NAT. En la siguiente imagen se muestran las IPs de las distintas máquinas: Además existen otras IPs importantes: 10.22.146.190: Dirección de la cabina de discos 192.168.122.50: IP virtual del servicio de tienda virtual. 192.168.122.100: IP virtual de servidor de base de datos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 41 7.4. Diseño de la arquitectura de servicios. Esta tarea consiste en la identificación de los principales servicios que componen la solución elegida. 7.4.1. Clúster de servidores web con balanceo de carga. Seguidamente se explicarán cómo se lleva a cabo el balanceo de carga. El servicio pulse se ejecutará tanto en el balanceador LVS (Linux Virtual Server) activo como en el de respaldo. En el de respaldo, este demonio se encargará de enviar una señal “latido” a la interfaz pública del balanceador activo para asegurarse de que éste esté funcionando correctamente. En caso de que el LVS de respaldo no reciba ninguna respuesta a los latidos emitidos, éste iniciará un proceso de recuperación contra fallos llamando a send_arp para que asigne la IP virtual a su MAC, envía una orden para apagar el demonio lvs activo e inicia el suyo propio para que acepte solicitudes para los servidores virtuales configurados. En el balanceador activo, pulse tendrá la tarea de iniciar el demonio lvs y la de responder a los latidos que se le han enviado. Una vez iniciado el demonio lvs, éste usará la utilidad ipvsadm para configurar y mantener la tabla de rutas IPVS (IP Virtual Server) en el kernel y además iniciará un proceso nanny para cada servidor real que haya configurado en el servidor virtual. Los procesos nanny revisarán el estado de los servidores reales e informarán al demonio lvs si el servicio está o no está funcionando. Si el servicio no está funcionando, el demonio lvs ordena a ipvsadm que borra el servidor real de la tabla de rutas IPVS. En cuanto a los servidores reales, éstos ofrecerán el servicio de tienda virtual Prestashop. Para ello será necesario instalar en ambos el servidor web Apache y PHP.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 48 En cuanto al software utilizado para conectarse desde el equipo del laboratorio con el sistema anfitrión, se ha utilizado la aplicación de escritorio remoto TigerVNC. En el sistema anfitrión estaba instalado el servidor. $ yum install tigervnc-server En el puesto de trabajo, tras haber instalado el sistema operativo Linux CentOS 6.4 y haber configurado la red, se instaló el cliente. $ yum install tigervnc-server 9.2. Creación de los recursos hardware. En este apartado vamos a ver cómo se crean los recursos necesarios que nos permitirán crear los clústeres para desplegar el servicio de tienda virtual. 9.2.1. Creación de las máquinas virtuales. Vamos a explicar cómo se crea una máquina virtual y luego veremos cómo clonarla para facilitar el proceso de creación de todas las máquinas virtuales. 9.2.1.1. Creación de la primera máquina virtual. $ virt-install --name=TFG_AdminClusterBD \ --vcpus=1 --ram=1024 \ --disk path=/mvirt/egarcia/TFG/AdminClusterBD.img,size=10 \ --location=/ImagenesDistroISO/centos/CentOS-6.4-x86_64-bin-DVD1.iso \ --os-type=linux \ --os-variant=rhel6 Donde: --name: Nombre de la máquina virtual. --vcpus: Nº de CPUs virtuales que usa. --ram: Cantidad de memoria que tiene asignada. --disk path,size: Lugar donde se guardará la imagen del disco y su tamaño en MB. --location: Lugar donde se encuentra la imagen del sistema operativo que se instalará. --os-type: Tipo de sistema operativo. --os-variant: Tipo de distribución del sistema operativo.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 49 9.2.1.2. Instalación del sistema operativo. Tras ejecutar la anterior orden se abrirá una pantalla para empezar con la instalación del sistema operativo de la máquina virtual. Durante la instalación: Selección del lenguaje: español. Selección del teclado: español. Tipos de dispositivos: dispositivos de almacenamiento básicos. Indicamos que se descarten todos los datos del dispositivo de almacenamiento. Nombre del host: localhost.localdomain. Huso horario: Atlántico/Canarias. Indicamos cual va a ser la contraseña del root. Creamos un diseño personalizado como el siguiente: Dejamos que instale en /dev/vda el gestor de arranque. Hacemos una instalación mínima (Minimal).
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 50 Una vez terminada la instalación de todos los paquetes ya tenemos la primera máquina virtual funcionando. 9.2.1.3. Clonación de las restantes máquinas virtuales. Ahora que ya tenemos una máquina virtual creada y funcionando, en vez de repetir el proceso de creación con su correspondiente instalación del SO, clonaremos la máquina anterior con el fin de agilizar la obtención de todas las máquinas necesarias. Se va a explicar cómo realizar la clonación de una de las máquinas y luego habrá que repetir el proceso teniendo en cuenta la siguiente tabla: Lo primero que vamos a hacer es copiar el archivo xml que describe la máquina. $ cd /etc/libvirt/qemu $ cp TFG_AdminClusterBD.xml TFG_ServerBD1.xml Luego copiamos la imagen del disco. $ cp /mvirt/egarcia/TFG/AdminClusterBD.img /mvirt/egarcia/TFG/ServerBD1.img
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 51 A continuación editamos el archivo que acabamos de copiar. $ vi TFG_ServerBD1.xml Y nos centramos en las líneas: <uuid>c11976df-40b6-1a37-ded0-192c544971c9</uuid> <name>TFG_AdminClusterBD</name> <source file='/mvirt/egarcia/AdminClusterBD.img'/> <interface type='network'> <mac address='52:54:00:2a:b7:e1'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> Con el objetivo de: Elimminar el “uuid” para que sea el propio software de virtualización quien genere un uuid único. Modificar el “name” para poner el nombre de la nueva máquina virtual. Modificar el “source file” para añadir su correspondiente imagen del disco. Modificar la “mac” de la interfaz de red para poner una nueva que se genera usando el script que se adjunta en el capítulo Anexos. Eliminar el “addres type” para que sea el propio software de virtualización quien le asigne un slot disponible. Quedando el archivo de la siguiente manera: <name>TFG_ServerBD1</name> <source file='/mvirt/egarcia/ServerBD1.img'/> <interface type='network'> <mac address='00:16:3e:5a:4a:8f'/> <source network='default'/> <model type='virtio'/> </interface> Finalmente guardamos los cambios y definimos la nueva máquina virtual. $ virsh define TFG_ServerBD1.xml Una vez terminado el anterior paso, en el administrador de máquinas virtuales, aparecerá la nueva que acabamos de crear. Una cosa a tener en cuenta después de haber clonado las máquinas, es que la nueva tarjeta de red no tiene el nombre esperado tal y como se evidencia al ejecutar la siguiente orden: $ ifconfig -a
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 52 Esto se debe a que al clonar la máquina y modificar la MAC de la interfaz que tenía, en el archivo /etc/udev/rules.d/70-persistent-net.rules aparecen las MAC de dos interfaces, la antigua que ya no existe (eth0) y la nueva que acabamos de modificar (eth1). Esta situación se podría solucionar teniendo en cuenta cuales son las interfaces activas a la hora de realizar su configuración. Una opción mucho mejor es eliminar el archivo /etc/udev/rules.d/70-persistent-net.rules y luego reiniciar la máquina para que lo vuelva a crear. $ rm -rf /etc/udev/rules.d/70-persistent-net.rules $ reboot Al hacer esto, en el nuevo archivo sólo aparece la interfaz que realmente está conectada, pero se ha quedado el nombre de la interfaz tal y como estaba antes de haberlo borrado. Así que editaremos el archivo y pondremos el nombre correcto, eth0. Después de esto reiniciamos la máquina y ya podemos empezar a configurar las interfaces. 9.2.2. Creación de una red virtual aislada. Ahora vamos a explicar cómo crear una red virtual aislada, que será la que use el clúster de bases de datos en alta disponibilidad. Para ello nos dirigimos al directorio /etc/libvirt/qemu/networks y creamos el correspondiente archivo de configuración en formato xml con la siguiente información. $ vi TFG_RVirt0.xml <network> <name>TFG_RVirt0</name> <uuid>a842d148-5fad-1e91-04d7-7b37d8356142</uuid> <bridge name='TFG_RVirt0' stp='on' delay='0' /> <mac address='52:54:00:35:01:5D'/> <ip address='10.22.122.1' netmask='255.255.255.0'> </ip> </network> A continuación definimos la red aislada y la configuramos para que se inicie siempre de forma automática. $ virsh net-define TFG_RVirt0.xml $ virsh net-autostart TFG_RdVirtual0.xml 9.2.3. Creación y configuración de las interfaces de red. En este momento ya tenemos todos los elementos necesarios para añadir todas la interfaces en las máquinas que necesiten más de una interfaz, usando para ello el administrador de máquinas virtuales. Para generar las MAC se usa el script que se adjunta en el apartado Anexos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 53 A continuación se muestra la tabla con las interfaces que necesita cada máquina y con los datos necesarios para realizar su configuración: Existen dos tipos distintos de archivos que se usan para la configuración de todas las interfaces y que se ubicarán en la carpeta /etc/sysconfig/network-scripts/ifcfg-X, siendo X el nombre del dispositivo. Configuración de la interfaz para asignación de IP mediante DHCP. DEVICE=eth0 HWADDR=00:16:3e:e9:1b:dc TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp Configuración de la interfaz para asignación de IP estática. DEVICE=eth1 IPADDR=10.22.122.2 HWADDR=00:16:3e:ca:93:49 NETMASK=255.255.255.0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static Para que la configuración de red tenga efecto sólo tenemos que reiniciar el servicio. $ service network restart 9.2.4. Creación de un volumen en la cabina de discos. Para terminar con los recursos necesarios, vamos a crear un volumen en la cabina de discos. Para ello accedemos a través de la interfaz de gestión de la cabina. Una vez dentro nos movemos por las distintas opciones hasta encontrar la que permite crear un volumen de 8 GB al que llamaremos “tfg” que se exportará usando iSCSI.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 54 9.3. Creación y configuración del clúster de servidores web con balanceo de carga. En este apartado se describirán los pasos que hay que realizar para hacer que las peticiones de los usuarios se repartan entre los dos servidores web. Las máquinas con las que trabajaremos son: TFG_LoadBalancer1: Balanceador activo. TFG_ LoadBalancer2: Balanceador de respaldo. TFG_WebServer1: Servidor web activo. TFG_WebServer2: Servidor web activo. 9.3.1. Creación y configuración de los balanceadores. Empezamos instalando el software que proporciona el balanceo de carga. $ yum groupinstall "Load Balancer" A continuación se configuran los servicios que son necesarios de forma que se arranquen cada vez que se enciendan las máquinas. $ chkconfig pulse on $ service pulse start $ chkconfig piranha-gui on $ service piranha-gui start
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 55 Y creamos la contraseña del usuario “piranha” que usaremos para acceder a la interfaz gráfica. $ piranha-passwd Luego abrimos los puertos necesarios. Para httpd (Servidor web). $ iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT Para piranha-gui (Interfaz gráfica para la configuración del LVS). $ iptables -I INPUT -m state --state NEW -p tcp --dport 3636 -j ACCEPT Para pulse (Encargado de monitorear el estado de los LVS). $ iptables -I INPUT -m state --state NEW -p tcp --dport 539 -j ACCEPT Para evitar que las conexiones se queden permanentemente activas. $ iptables -I INPUT -m state --state INVALID -s 192.168.122.0/24 -j ACCEPT Después activamos el reenvío de paquetes (IP Forwarding). Para ello accedemos al fichero /etc/sysctl. $ vi /etc/sysctl Modificamos el valor de la variable “ip_forward”. net.ipv4.ip_forward = 1 Y hacemos que el cambio tenga efecto: $ sysctl -p /etc/sysctl.conf Por último, también es necesario deshabilitar SELinux. Se accede al fichero /etc/selinux/config. $ vi /etc/selinux/config Modificamos el valor de la variable “SELINUX”. SELINUX = disabled Y reiniciamos las máquinas. $ reboot
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 56 Ahora ya podemos acceder a la interfaz gráfica “Piranha” para empezar con la creación de la infraestructura que dará soporte al servicio con balanceo de carga. Para ello sólo tenemos que poner en el navegador web del sistema anfitrión la IP del balanceador principal seguida del puerto, es decir 192.168.122.11:3636. Empezamos configurando el balanceador activo cuya IP es la 192.168.122.11. Como ya se ha mencionado con anterioridad se elige la opción “Direct Routing” porque proporciona mayor rendimiento que el resto de configuraciones. Este punto es crucial, y cambiará toda la configuración de la solución final.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 57 En esta otra pestaña se configura el balanceador de respaldo. Como se puede observar sólo es necesario añadir la IP de la máquina destinada a tal fin, la 192.168.122.12. Ahora vamos a configurar un servidor virtual que con la IP virtual 192.168.122.50 que prestará el servicio. Las peticiones web (puerto 80 tcp) se van a balancear usando el algoritmo “Round robin”.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 64 9.4.3. Creación del clúster usando Conga. Llegados a este punto ya tenemos todos los elementos necesarios para poder empezar con la creación del clúster. Lo primero que haremos será acceder a la interfaz gráfica del Conga (servidor luci). Para ello abrimos el explorador del equipo e introducimos: https://10.22.122.10:8084 Al acceder por primera vez nos saldrá la siguiente pantalla: Tras haberle dado a “entiendo los riesgos” podremos “añadir la excepción” y finalmente, después de haber confirmado, aparece la interfaz gráfica en la que debemos identificarnos con nuestro nombre de usuario y contraseña.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 65 Una vez dentro nos dirigimos a “Manage Clusters” y en el apartado “create” se encuentra la pantalla para la creación del clúster. Ponemos como nombre del clúster “ClusterBD”. Marcamos la opción “Use same password for all nodes” ya que a la hora de crear los usuario ricci le pusimos la misma contraseña en todos los nodos. Agregamos cada una de las máquinas que conforman el clúster. Para facilitar el trabajo y no tener que trabajar directamente con las IPs de las máquinas, lo que se hizo fue añadir el nombre de ambas máquinas en el fichero /etc/hosts tanto el servidor luci como en los nodos que conforman el clúster. El archivo queda de la siguiente forma: 10.22.122.11 ServerBD1 10.22.122.12 ServerBD2 Para añadir las máquinas, a parte de sus nombres es necesario la contraseña del usuario ricci y el puerto en el que escucha el servicio ricci (11111). Seleccionamos la opción “Use Locally Installed Packages” para usar los paquetes que nosotros mismos hemos instalado. Seleccionamos la opción “Enable shared storage support” para permitir el acceso a sistemas de archivos compartidos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 66 Finalmente, si todo ha ido bien, tendremos nuestro clúster funcionando. 9.4.4. Creación de un volumen lógico compartido. En este apartado se van a detallar los pasos que hay que seguir para crear el espacio de almacenamiento compartido que va a utilizar el clúster. Todos estos pasos sólo habrá que hacerlos en uno de los nodos que conforman el clúster. 9.4.4.1. Creación de un volumen físico. Lo primero que vamos a hacer es crear una partición, en el disco exportado con iSCSI (sda), con la que luego crear un volumen físico. $ fdisk /dev/sda Desde la línea de comandos de fdisk se crea una partición con la opción n. Orden (m para obtener ayuda): n Acción de la orden e Partición extendida p Partición primaria (1-4) p Número de partición (1-4): 1 Primer cilindro (1-8205, valor predeterminado 1): Se está utilizando el valor predeterminado 1 Last cilindro, +cilindros or +size{K,M,G} (1-8205, valor predeterminado 8205): Se está utilizando el valor predeterminado 8205
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 67 Y con la opción p comprobamos que la partición se ha creado correctamente. Orden (m para obtener ayuda): p Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/sda1 1 8205 8401904 83 Linux Finalmente con la opción w se guardan los cambios. Luego se crea el volumen físico. $ pvcreate /dev/sda1 Si quisiéramos eliminar el volumen físico: $ pvremove /dev/sda1 Si quisiéramos ver que volúmenes físicos existen: $ pvscan 9.4.4.2. Creación de un grupo de volúmenes. Ahora que ya tenemos configuradas las particiones físicas, podemos crear un grupo de volúmenes que contendrá el volumen lógico. Antes de hacerlo, debemos configurar el protocolo de cerrojo para que permita la creación de grupo de volúmenes y volúmenes lógicos. Para ello, en el archivo /etc/lvm/lvm.conf de los dos nodos que conforman el clúster (TFG_ServerBD1 y TFG_ServerBD2), modificamos el valor de la variable locking_type, dejándolo de la siguiente manera: locking_type=0 Una vez echo eso, ya podemos crear el grupo de volúmenes usando: $ vgcreate -c y Grupo_Almacen /dev/sda1 Si quisiéramos eliminar el grupo de volúmenes: $ vgremove Grupo_Almacen Si quisiéramos ver que grupo de volúmenes existe: $ vgscan 9.4.4.3. Creación de un volumen lógico. Llegados a este punto, vamos a crear el volumen lógico con la orden: $ lvcreate -l 100%FREE -n Volumen_Almacen Grupo_Almacen Si quisiéramos eliminar el volumen lógico: $ lvremove /dev/sda Si quisiéramos ver que volúmenes lógicos existen: $ lvscan
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 68 9.4.4.4. Creación de un sistema de archivos compartido. Ahora que ya se dispone de un volumen lógico, vamos a crear un sistema de archivos compartido en él. $ mkfs.gfs2 -p lock_dlm -t ClusterBD:storage -j 2 /dev/Grupo_Almacen/Volumen_Almacen Donde: -p lock_dlm: Especifica el protocolo de sincronización para acceder al sistema de archivos. -t ClusterBD:storage: ClusterBD es el nombre del clúster que se ha creado antes y que utilizará el sistema de archivos al se le asignará la etiqueta storage. -j 2: Número de nodos que podrán acceder al espacio compartido. /dev/Grupo_Almacen/Volumen_Almacen: Ruta del volumen lógico creado. 9.4.5. Montaje del sistema de archivos distribuido. Llegados a este punto vamos a hacer que los dos servidores de base de datos monten el sistema de archivos que se ha creado anteriormente para que puedan usarlo. Para ello lo primero que vamos a hacer en ambos nodos es crear un punto de montaje. $ mkdir /Almacen Luego accedemos al fichero /etc/fstab para hacer que el sistema de archivos se monte cada vez que se arranque la máquina. UUID=c2c08f55-a23e-4c8f-b07f-332cf8d063f8 / ext4 defaults 1 1 UUID=750ef787-165c-4ad8-9795-189a3ae7c9a6 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/Grupo_Almacen/Volumen_Almacen /Almacen gfs2 defaults 0 0 9.4.6. Configuración del servicio Mysql en alta disponibilidad. En este momento disponemos de un clúster básico que ya puede usar el almacenamiento compartido. Así que ahora vamos a poner el servicio en alta disponibilidad. Como vamos a hacer que determinados servicios sean manejados por el propio clúster, los vamos a parar en los dos nodos que lo conforman. $ chkconfig clvmd off $ chkconfig iscsid off $ chkconfig gfs2 off $ chkconfig mysqld off
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 69 9.4.6.1. Creación de los recursos controlados por el clúster. Para agregar los recursos que necesita manejar el clúster nos dirigimos a la pestaña “Resources” y allí los crearemos con los siguientes datos: Al finalizar deberíamos tener algo parecido a esto:
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 70 9.4.6.2. Creación de los dominios “failover”. Ahora vamos a crear los dominios “failover” que se encargarán de restringir en qué nodos puede ejecutarse un determinado servicio. Para realizar esto, accedemos a la pestaña “Failover Domains” para añadir los que se muestran a continuación: Una vez se han agregado cada uno de los “failovers” necesarios, tendremos algo como esto:
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 71 9.4.6.3. Creación de los grupos de servicios. Para terminar con la creación del clúster de servidores de base de datos en alta disponibilidad, sólo nos queda crear los grupos de servicios. Esto lo haremos a través de la pestaña “Service Groups”. Hay que tener en cuenta las siguientes consideraciones: Para añadir un recurso se usa la opción “Add resource”. Es importante que la política de recuperación del servicio SClusterBD sea recolocar para que la IP y el servicio de base de datos migre al nodo de respaldo cuando el activo falle. Otra cosa importante es anidar los recursos Iscsi, Clvmd y GFS2 para que se inicien en este mismo orden. Para ello una vez tenemos añadido el primer recurso, usamos la opción “Add child resource”. El resultado final quedaría:
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 72 9.5. Instalación de la tienda virtual Prestashop. Llegados a este punto ya estamos en condiciones de poder desplegar el servicio de tienda virtual. 9.5.1. Instalación de los módulos software necesarios en los servidores web. Antes de nada vamos a instalar en ambos servidores web PHP y algunas de sus extensiones: $ yum install php php-mysql Instalación de la librería GD: $ yum install php-gd gd-devel Instalación de la extensión Mcrypt: Para la instalación de esta librería ha sido necesario descargase el repositorio EPEL. $ yum install wget $ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm $ rpm -ivh epel-release-6-8.noarch.rpm $ yum install php-mcrypt Instalación de la extensión Mbstring: $ yum install php-mbstring Instalación de la extensión Dom: $ yum isntall php-xml 9.5.2. Creación de la base de datos y su usuario. Como la base de datos se alojará en el espacio compartido, lo primero que tenemos que hacer es compartir el archivo de configuración de Mysql para que ambos servidores de base de datos usen el mismo. Para ello en uno de ellos: $ cp /etc/my.conf /etc/my.cnf_copia $ mv /my.conf /Almacen/my.conf $ ln -s /Almacen/my.conf /etc/my.conf Y en el otro: mv /etc/my.conf /etc/my.cnf_copia $ ln -s /Almacen/my.conf /etc/my.conf Ahora que ya ambos servidores usan la misma configuración debemos hacer que la ruta de datos apunte al directorio donde queremos que se cree la base de datos compartida. $ mkdir /Almacen/Prestashop $ vi /Almacen/my.cnf
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 73 [mysqld] datadir=/Almacen/Prestashop socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks; symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid Es muy importante que después de haber modificado el archivo de configuración se reinicie el servicio para que los cambios tengan efecto. $ service mysqld restart Ahora ya podemos crear la base de datos y el usuario que puede acceder a ella. Al usar el espacio compartido sólo es necesario hacerlo en uno de los nodos. $ mysql -u root -p mysql> CREATE DATABASE prestashop mysql> CREATE USER 'prestashop'@'localhost' IDENTIFIED BY 'contraseña'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'prestashop'@'localhost' WITH GRANT OPTION; mysql> CREATE USER 'prestashop'@'%' IDENTIFIED BY 'contraseña'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'prestashop'@'%' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; 9.5.3. Instalación. El proceso de instalación se llevará a cabo con sólo un servidor web y de base de datos funcionando. Lo primero que tenemos que hacer es descargar el software de la tienda virtual en el directorio raíz de Apache y descomprimirlo. $ cd /var/www/html $ wget https://www.prestashop.com/ajax/controller.php?method=download&type=releases&file=pre stashop_1.6.0.14.zip&language=es $ unzip prestashop_1.6.0.14.zip
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 80 10.1.1.2. Comprobación del correcto funcionamiento del balanceo de carga. Después de haber configurado los LVS y haber creado los alias de las interfaces de los servidores web reales, se está en condiciones de ver si el balanceo funciona correctamente. Con este fin se crean dos páginas de prueba que se colocan en cada uno de los servidores web en el directorio /var/www/html. Ahora si accedemos a ellos a través de dos navegadores distintos vemos como uno de ellos muestra una página y el otro muestra otra distinta. También se podría haber pulsado repetidamente f5 en uno de los navegadores y ver como se alternan las dos páginas distintas. Otra forma de comprobar si realmente las peticiones se están repartiendo entre los dos servidores es a través de la orden: $ ipvsadm Si nos fijamos en las conexiones vemos como el balanceador las ha repartido entre los dos servidores. Por último también se podría haber recurrido a los ficheros de log de apache: $ cat /etc/httpd/logs/access_log | wc –l Si partimos de unos ficheros de log vacíos, el número de accesos registrados en cada servidor web real debería ser la mitad del total de accesos al LVS.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 81 10.1.1.3. Comprobación de la recuperación ante fallos. Para ver cómo se comporta nuestro subsistema ante la caída de alguno de los nodos, se van a estudiar los siguientes casos: Caída del balanceador activo (TFG_LoadBalancer1): Las peticiones se siguen repartiendo entre los dos servidores web ya que el balanceador de respaldo (TFG_LoadBalancer2) toma el control. Recuperación del servidor caído: Si se recupera el balanceador que anteriormente se había caído, éste se convierte en el de respaldo. Caída del servidor web (TFG_WebServer1): Si se cae el servidor web, el balanceador lo detecta y empieza a mandar las peticiones al único servidor activo (TFG_WebServer2). El rendimiento decae. Recuperación del servidor web (TFG_WebServer1): Si se recupera el servidor caído, el balanceador lo detecta y vuelve a repartir las solicitudes entre los dos nodos. Las pruebas anteriores se repiten haciendo que se caigan y recuperen las máquinas que antes no lo habían hecho. Los resultados son idénticos a los vistos antes. 10.1.1.4. Comprobación del rendimiento. Usando la aplicación Apache Bench se mide el rendimiento del clúster de la siguiente forma: ab -n 500000 -c 500 -r http://192.168.122.50/ Donde: -n 500000: indica el número de peticiones realizadas. -c 500: indica el nivel de concurrencia. -r: con esta opción no se cierra el socket si se reciben errores. http://192.168.122.50/ es la URL donde se ubica el servidor web. Luego se realiza la misma prueba con sólo un servidor activo. Estos son los resultados de ambas pruebas: 29 34 35 36 37 43 1029 1039 31239 33 34 34 34 35 239 1034 1467 102718 1 6 36 216 1296 7776 46656 279936 50 66 75 80 90 95 98 99 100 TIEMPO DE RESPUESTA (MS) PORCENTAJE DE PETICIONES (%) 2 Servidores 1 Servidor
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 82 Como era de esperar el rendimiento con los dos servidores funcionando es prácticamente el doble que con uno sólo. 10.1.2. Pruebas realizadas al clúster de servidores de base de datos en alta disponibilidad. Ahora vamos a ver las pruebas que se han realizado al otro subsistema que conforma nuestro sistema de información, el clúster de bases de datos en alta disponibilidad. 10.1.2.1. Comprobación de la infraestructura de red. Ya que se ha creado una red aislada para comunicar a los nodos que conforman el clúster, vamos a comprobar que éstos sólo pueden hacerlo a través de esta red. En la máquina TFG_ServerBD1 sería: $ ping -I eth0 10.22.122.12 $ ping -I eth1 10.22.122.12 $ ping -I eth2 10.22.122.12 Sólo se obtiene la respuesta de la interfaz eth1 que es la que corresponde con la red aislada. Además será necesario comprobar que los dos nodos tienen acceso a la cabina de discos. Al igual que antes se usa la orden ping debiendo obtener una respuesta. En los dos nodos: $ ping -I eth2 10.22.146.190
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 83 10.1.2.2. Comprobación del almacenamiento distribuido. Durante la creación del almacenamiento distribuido se han ido realizando las siguientes pruebas: Se comprueba que se ha exportado correctamente el disco. $ tail /var/log/messages Se comprueba que se ha creado correctamente el volumen físico. $ pvscan Se comprueba que se ha creado correctamente el grupo de volúmenes. $ vgscan Se comprueba que se ha creado correctamente el volumen lógico. $ lvscan Después de formatear el volumen lógico y montarlo en los dos nodos se comprueba si la información que se añade al disco en uno de los dos nodos aparece también en el otro y que esta información es persistente. 10.1.2.3. Comprobación de la recuperación ante fallos. Ahora vamos a probar si el clúster de alta disponibilidad realmente funciona. Lo primero que se hace es comprobar si es capaz de activar los servicios. Luego se comprueba que si se cae el servidor de base de datos activo el servicio migra al de respaldo. En ambos casos el resultado ha sido el correcto.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 84 10.2. Pruebas de integración. Las pruebas de integración son las que se realizan cuando vamos juntando los componentes que conforman nuestro sistema y cuyo funcionamiento ha sido probado. A la hora de unir los dos clúster lo único que hay que tener en cuenta es que los servidores web puedan acceder a los servidores de base de datos a través de la IP virtual de estos últimos. Para ello, usando la orden ping en cada uno de los servidores web, se comprueba que los servidores de base de datos responden. $ ping -I eth0 192.168.122.100 Como el clúster es el encargado de manejar los servicios, para realizar la comprobación con el servidor de respaldo, habrá que forzar que el servicio migre a éste, siendo necesario para ello apagar el servidor activo. 10.3. Pruebas del sistema. Las pruebas de sistema tienen por objetivo comprobar que el sistema, que ha superado las pruebas de integración, se comporta correctamente con su entorno. Una vez se ha instalado Prestashop estamos en condiciones de probar el sistema como un todo. Para ello se realizan muchas de las pruebas que se habían hecho a cada subsistema por separado y se comprueba que: El rendimiento del sistema de información final es prácticamente el mismo al que habíamos visto antes. Es un poco menor puesto que antes se mostraba la página de inicio de Apache y ahora se muestra la de Prestashop que es un poco más pesada. ab -n 500000 -c 500 -r http://192.168.122.50/prestashop/ Si se cae un balanceador activo toma el control el de respaldo. Si se cae uno de los servidores web el otro sigue proporcionando el servicio. Si se cae el servidor de base de datos activo toma el control el de respaldo. Si cualquiera de los servidores caídos vuelve a ponerse en marcha el sistema sigue funcionando correctamente. Para que el servicio deje de estar disponible tiene que darse una de las siguientes opciones: o Los dos servidores de base de datos tienen que caerse. o Los dos servidores web tienen que caerse. o Los dos balanceadores tienen que caerse. Para terminar se ha entrado tanto en la parte pública como en la privada de la tienda virtual y se ha navegado por todas las opciones que ésta ofrece, no habiendo detectado ningún tipo de error.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 85 11. Conclusiones y trabajos futuros. 11.1. Conclusiones. El hecho de construir un sistema de información como este no es una tarea fácil. Son muchas las consideraciones a tener en cuenta y conseguir que todo el conjunto funcione correctamente puede resultar un tanto complejo. Han sido muchas las horas invertidas en su realización. Gracias a todo el esfuerzo invertido se ha logrado cumplir con los objetivos marcados y en el tiempo establecido. Enfrentarse a un proyecto de estas características ha supuesto un reto tanto personal como profesional. Ser uno mismo el encargado de planificar, analizar, diseñar, construir y probar una solución que se ajustara a la descripción del proyecto ha sido una experiencia nueva y muy gratificante. Este proyecto me ha servido para mejorar mi formación, gracias a él he podido ampliar mi conocimiento sobre las tecnologías de virtualización y de alta disponibilidad. Además me ha permitido experimentar con otro tipo de tecnologías que hasta ahora no me resultaban muy conocidas, como fue el hecho de usar balanceo de carga y el tener que trabajar con una cabina de discos. Por todo ello estoy muy satisfecho con el trabajo realizado y con el resultado obtenido. Se ha diseñado, instalado, configurado y desplegado un servicio de tienda virtual que funciona en alta disponibilidad y con calidad de servicio en lo que se refiere a sus tiempos de respuesta. Para lograrlo se ha tenido que: Diseñar la topología del clúster y de las redes de datos utilizadas. Crear, instalar y configurar los elementos de infraestructura necesarios: redes de datos, máquinas virtuales y cabinas de almacenamiento y productos software para proporcionar alta disponibilidad y rendimiento en computación y almacenamiento. 11.2. Trabajo futuro. Tras haber terminado con el proyecto y haber obtenido el resultado deseado, quedan varios aspectos de éste que podrían mejorarse: Se ha trabajado con un diseño de red muy simple ya que no se había marcado como un objetivo. Sería importante realizar un diseño más elaborado de la infraestructura de red y trabajar con más redes aisladas de tal forma que sólo permitiera las comunicaciones entre las máquinas que lo necesitan. Desde la página de Red Hat Cluster Suite nos aconsejan deshabilitar SELINUX ya que si se usa con GFS2 reduce su velocidad. Habría que ver en qué medida cae la velocidad para poder valorar si configurar o no SELINUX. Se debería obtener un certificado SSL y configurar apache para poder usar el protocolo HTTPS para que las conexiones fuesen seguras.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 86 Habría que asignarle un nombre de dominio a la IP que ofrece el servicio en el DNS de la universidad y hacerlo accesible desde cualquier punto de la universidad. El volumen que se ha exportado de la cabina está sin contraseña, sería bueno añadirle una y configurar iSCSI para que pueda seguir accediendo a él. Además estaría bien crear un nuevo volumen en la cabina para comprobar cómo se añade un nuevo disco al grupo de volúmenes y se expande el volumen lógico.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 87 12. Fuentes de información. [1] Virtualización: http://www.adminso.es/images/6/6d/Eugenio_cap1.pdf [2] Sistemas de computación distribuidos: http://searchdatacenter.techtarget.com/es/definicion/Computacion-en-la-nube http://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida [3] Tipos de clúster: https://access.redhat.com/documentation/enUS/Red_Hat_Enterprise_Linux/5/html/Cluster_Suite_Overview/ch.gfscs.cluster-overviewCSO.html [4] Sistemas de almacenamiento: http://www.byspel.com/sistemas-de-almacenamiento/ [5] Normativa y legislación: http://www.agpd.es/portalwebAGPD/canaldocumentacion/legislacion/union_europea/directi vas/index-ides-idphp.php http://es.wikipedia.org/wiki/ISO/IEC_27000-series http://hipertextual.com/archivo/2014/05/como-elegir-licencias-open-source/ [6] Libvirt: https://docs.fedoraproject.org/esES/Fedora/18/html/Virtualization_Getting_Started_Guide/sec_libvirt-libvirt-tools.html https://libvirt.org/index.html http://linux.die.net/man/1/virt-install [7] Red Hat Cluster Suite: https://access.redhat.com/documentation/esES/Red_Hat_Enterprise_Linux/6/html/Cluster_Suite_Overview/ch.gfscs.cluster-overviewCSO.html [8] Red Hat Linux Virtual Server: https://access.redhat.com/documentation/enUS/Red_Hat_Enterprise_Linux/5/html/Virtual_Server_Administration/index.html [9] Piranha: http://www.linuxvirtualserver.org/docs/ha/piranha.html [10] Prestashop: http://doc.prestashop.com/display/PS16/Installing+PrestaShop
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 88 13. Anexos. 13.1. Pliego de condiciones técnicas. En este apartado se especifica los aspectos principales que debería tener un pliego técnico para contratar un desarrollo análogo al abordado en este trabajo. Objetivo. El presente contrato tiene la finalidad de contratar los servicios para crear la infraestructura necesaria donde poder desplegar una tienda virtual con alta disponibilidad y balanceo de carga. Presupuesto. El presupuesto para la presente contratación es de 6955€ IGIC incluido que se reparte de la siguiente manera: 750€ correspondientes a 50 horas de tareas de planificación del sistema. 5.000€ correspondientes a 200 horas de tareas de desarrollo. 750€ correspondientes a 50 horas de tareas de prueba. 455€ correspondientes al 7% de IGIC, de la suma de las dos cifras anteriores. Especificaciones técnicas. Para abordar este proyecto se requerirán los siguientes recursos: Hardware: o Un ordenador personal en uno de los laboratorios de investigación con acceso al sistema anfitrión. o Sistema anfitrión capaz de albergar siete máquinas virtuales y que tenga acceso a la cabina de discos e Internet. o Cabina de discos. Software: o CentOS Linux 6 será el sistema operativo que dará soporte a al software de alta disponibilidad y balanceo de carga, que en todo momento deberá estar bajo la licencia de software libre. o KVM será la plataforma de virtualización. o Conga se encargará de la creación y configuración del clúster de bases de datos en alta disponibilidad. o Piranha + ipvsadm serán usados para la creación y configuración del clúster de servidores web en alta disponibilidad. o Apache, PHP y Mysql terminarán de conformar la infraestructura necesaria para desplegar el servicio de tienda virtual Prestashop. De red: Será necesaria una infraestructura de red capaz de comunicar el ordenador del laboratorio con el sistema anfitrión y este último con la cabina de discos.
Diseño e instalación de un servicio web de tienda virtual en alta disponibilidad Eloy García Martínez 89 Requisitos de fiabilidad. El desarrollo de la solución debe realizarse de tal forma que se garantice su fiabilidad y comportamiento estable. Concretamente se utiliza unos recursos con redundancia para que el sistema siga funcionando, incluso en el caso de que: Caída de uno de los servidores web de tienda virtual. Caída de uno de los servidores de bases de datos. Caída de uno de los balanceadores de carga. Además esta redundancia permite garantizar una calidad de servicio de manera que las peticiones se repartan en todo momento entre los servidores web activos. Plazo de Ejecución. El contratista se compromete a realizar el trabajo en un plazo máximo de cinco meses que empezará a contar desde la firma del contrato y que cumplirá con lo establecido en este documento. Penalización. La no entrega en el tiempo establecido conllevará una penalización del 0.002% por día de retraso, no pudiendo superar el 15% del presupuesto final. Documentación. El contratista se compromete a generar toda la documentación necesaria que se entregará al contratante tanto en formato digital como una copia impresa encuadernada. Confidencialidad de la información. De conformidad a lo establecido por la Ley Orgánica 15/1999 de Protección de Datos de Carácter personal (LOPD) y del Real decreto 1720/2007 (RDLOPD) del Reglamento de desarrollo de la LOPD, las dos partes firmantes quedan expresamente obligados a mantener absoluta confidencialidad y reserva sobre cualquier dato, especialmente los de carácter personal. Propiedad del resultado. Tanto el sistema de información creado como la documentación generada pasarán a formar parte de la Escuela de Ingeniería Informática, quienes podrán ejercer su derecho de explotación sobre los mismos. La entrega se hará conforme al Proceso de Gestión de la Entrega definido por la Dirección de la Escuela de Ingeniería Informática.