Está en la página 1de 19

14/10/12 11:34

DESPLIEGUE DE APLICACIONES WEB


SOLUCIONES

Despliegue de aplicaciones web Soluciones


Francisco Aldarias Raya

Despliegue de aplicaciones web Francisco Aldarias Raya De la edicin Ra-Ma 2013 MARCAS COMERCIALES. Las designaciones utilizadas por las empresas para distinguir sus productos (hardware, software, sistemas operativos, etc.) suelen ser marcas registradas. RA-MA ha intentado a lo largo de este libro distinguir las marcas comerciales de los trminos descriptivos, siguiendo el estilo que utiliza el fabricante, sin intencin de infringir la marca y slo en beneficio del propietario de la misma. Los datos de los ejemplos y pantallas son ficticios a no ser que se especifique lo contrario. RA-MA es marca comercial registrada. Se ha puesto el mximo empeo en ofrecer al lector una informacin completa y precisa. Sin embargo, RA-MA Editorial no asume ninguna responsabilidad derivada de su uso ni tampoco de cualquier violacin de patentes ni otros derechos de terceras partes que pudieran ocurrir. Esta publicacin tiene por objeto proporcionar unos conocimientos precisos y acreditados sobre el tema tratado. Su venta no supone para el editor ninguna forma de asistencia legal, administrativa o de ningn otro tipo. En caso de precisarse asesora legal u otra forma de ayuda experta, deben buscarse los servicios de un profesional competente. Reservados todos los derechos de publicacin en cualquier idioma. Segn lo dispuesto en el Cdigo Penal vigente ninguna parte de este libro puede ser reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni por cualquier procedimiento, ya sea electrnico, mecnico, reprogrfico, magntico o cualquier otro sin autorizacin previa y por escrito de RA-MA; su contenido est protegido por la Ley vigente que establece penas de prisin y/o multas a quienes, intencionadamente, reprodujeren o plagiaren, en todo o en parte, una obra literaria, artstica o cientfica. Editado por: RA-MA Editorial Calle Jarama, 3A, Polgono Industrial Igarsa 28860 PARACUELLOS DE JARAMA, Madrid Telfono: 91 658 42 80 Fax: 91 662 81 39 Correo electrnico: editorial@ra-ma.com Internet: www.ra-ma.es y www.ra-ma.com ISBN: 978-84-7897-XXX-X Depsito Legal: M-XXXXX-20011 Autoedicin: Autores Diseo Portada: Antonio Garca Tom Impresin: Closas-Orcoyen Impreso en Espaa

Dedicatoria.

NDICE

1 ARQUITECTURAS WEB....................................................7
1.1 ACTIVIDADES............................................................................7 1.1.1 Diagrama de despliegue....................................................................7 1.1.2 Puertos.............................................................................................. 8 1.2 EJERCICIOS PROPUESTOS...........................................................8 1.2.1 Arquitectura web...............................................................................8 1.2.2 Modelo-Vista-Controlador.................................................................11 1.2.3 Servicio de alta disponibilidad.........................................................15 1.2.4 Balanceador de carga......................................................................18 1.3 TEST DE CONOCIMIENTOS........................................................18

1 ARQUITECTURAS WEB 1.1 ACTIVIDADES 1.1.1 Diagrama de despliegue


Crear un diagrama de despliegue en donde exista un balanceador de carga sobre dos servidores linux.

1.1.2

Puertos
Rellena los siguientes puertos: DESCRIPCIN Servidor HTTP Servidor HTTPS Servidor FTP PUERTO 80 443 21

1.2 EJERCICIOS PROPUESTOS 1.2.1 Arquitectura web


1.1.1.1 FLICKR
Flickr es un sitio web que permite almacenar, ordenar, buscar, vender y compartir fotografas y videos en lnea. La popularidad de Flickr se debe fundamentalmente a su capacidad para administrar imgenes mediante herramientas que permiten al autor etiquetar sus fotografas y explorar y comentar las imgenes de otros usuarios. La arquitectura de Flickr se puede destacar el desglose de la plataforma utilizada en el sitio de intercambio de fotografas: PHP, MySQL, Shards, Memcached, Squid en reverse-proxy para html e imgenes, Linux (RedHat), Smarty, Perl, PEAR para XML y Email, ImageMagick para el procesamiento de imgenes, Java para el servicio del ndulo, Apache, SystemImager para el despliegue, Ganglia, Subcon stores, y Cvsup para distribuir y actualizar colecciones de archivos a travs de la Red. 1. Buscar documentacin sobre la instalacin de un balanceador de carga. 2. Buscar informacin para el montaje de clusters.

Figura 1: Arquitectura Web Flickr

De esta arquitectura cabe resaltar los siguientes aspectos: 3. Pair of ServerIron's: funciona como balanceador de carga en el cual incluyen redundancia de datos. 4. Squid Caches: provee la primera capa de cacheo, la cual se encarga de cachear el contenido esttico tal como imgenes y HTML, as evitando a PHP App Servers se sobrecargue por el volumen de consultas. 5. PHP App Servers: clster de servidores de aplicativo los cuales tienen la funcionalidad de la pgina. 6. Storage Manager: es el encargado de organizar la informacin. 7. Master-master shards: estas son los nodos de lectura y escritura de los usuarios luego este es replicado a Dual Tree Central Database 9

8. Dual Tree Central Database: guarda la informacin del usuario 9. Memcached Cluster: usado por PHP App Servers para tener la cache de la parte del aplicativo 10. Big Search Engine: es utilizada para llevar registro de la porcin de datos que quieren servir. La arquitectura de Flickr est diseada de manera que pueda soportar incrementos en el trfico y as evitar conflictos en el uso de recursos por parte de los servicios soportados, pues el servidor web y el servidor de base de datos se encuentran en servidores separados. Adicionalmente se contempla no slo un servidor sino un clster. Se contemplan balanceadores de cargas y replicacin para atender las peticiones. No se dispone de un solo servidor dedicado exclusivamente a los archivos estticos. Para acelerar la respuesta de los servicios se utilizan memorias cache. Los cuales revisan si la solicitud del cliente ha sido servida ya en algn momento y se encuentra en su memoria la respuesta, para lo cual sirve al cliente esta informacin, evitando as el paso hasta el servidor web y que este realice las consultas o procesos junto con el servidor de base de datos.

1.1.1.2 MAAS
Metales como servicio MAAS (Metal as a Service) Ubuntu Server dispone permite crear nodos para el montaje de clusters utilizando la instalacin que llama MAAS. Metales como servicio - MAAS - trae el lenguaje de la nube de servidores fsicos. Hace que sea fcil de configurar el hardware en el que implementar cualquier servicio que necesita para escalado horizontal de forma dinmica, una nube es slo un ejemplo.

10

Te permite disponer de sus servidores de forma dinmica, al igual que los casos nube - slo en este caso, son enteros nodos fsicos. "Agregar un nodo al clster Hadoop, y asegrese de que tiene al menos 16 GB de RAM" es tan fcil como pedirlo. Con una simple interfaz web, puede agregar, comisin, actualizar y reciclar sus servidores a voluntad. A medida que cambian sus necesidades, usted puede responder rpidamente, mediante la adicin de nuevos nodos de forma dinmica y volver a implementarlos entre servicios. Cuando llegue el momento, los nodos pueden ser retirados para su uso fuera de los MAAS.
https://wiki.ubuntu.com/ServerTeam/MAAS

1.2.2

Modelo-Vista-Controlador.

Vamos a transformar un listados de artculos que no aplica el modelo-vistacontrolador(MVC), en un listado con MVC:
La base de datos se llamar daw, y la carga de datos se realizar mediante el fichero articulos.sql, sobre mysql. articulos.sql
CREATE TABLE IF NOT EXISTS `articulos` ( `codigo` int(2) NOT NULL AUTO_INCREMENT, `descripcion` varchar(30) NOT NULL, PRIMARY KEY (`codigo`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; --INSERT INTO `articulos` (`codigo`, `descripcion`) VALUES (1, 'libro1'), (2, 'libro2'), (3, 'libro3');

11

Figura 2: Listado de artculos que no es MVC

vistacontrolador.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MVC NO</title> </head> <body> <h1>Listado de articulos</h1> <h1>No es MVC</h1> <?php $conexion = mysql_connect('localhost','paco',''); mysql_select_db('daw', $conexion); $resultado = mysql_query('SELECT * FROM articulos', $conexion); ?> <table border="1"> <tr> <td>Fecha</td> <td>Texto</td> </tr> <?php while($fila= mysql_fetch_array($resultado, MYSQL_ASSOC)){ echo "<tr>"; echo "<td> ".$fila['codigo']." </td>"; echo "<td> ".$fila['descripcion']." </td>"; echo "</tr>"; } ?> </table> <?php mysql_close($conexion);

12

?> </body> </html>

Creacin de capas.
Utilizando el fichero anterior. Deberemos separar en tres archivos, que llamaremos modelo, vista, contralador. modelo.php
<?php function getArticulos() { $conexion = mysql_connect('localhost','paco',''); mysql_select_db('daw', $conexion); $resultado = mysql_query('SELECT * FROM articulos', $conexion); $articulos = array(); while( $articulo = mysql_fetch_assoc($resultado)) { $articulos[] = $articulo; } mysql_close(); return $articulos; } ?>

vista.php
<html> <head> <title>MVC</title> </head> <body> <h1>Listado de articulos</h1> <h1>MVC</h1> <table border="1"> <tr> <td>Codigo</td> <td>Descripcion</td> </tr> <?php foreach($articulos as $articulo){ ?> <tr> <td><?php echo $articulo['codigo'];?></td> <td><?php echo $articulo['descripcion'];?></td> </tr> <?php } ?> </table> </body>

13

</html>

controlador.php
<?php require('modelo.php'); $articulos = getArticulos(); require('vista.php'); ?>

De este modo tenemos separado en el controlador.php casi todo el cdigo php con la lgica de negocio, mientras que en vista.php solo recorremos un array con datos. Adems el controlador se podra utilizar para otras vistas. Despus de esta separacin el controlador quedara tan solo como un agente para pasar datos del modelo hacia la vista, pero en aplicaciones mas complejas el controlador es quien realiza las tareas de autenticacin de usuarios, manejo de sesiones, filtrar y validar entradas de datos por GET o POST. Deberemos abrir el controlador.php, para ver el resultado:

Figura 3: MVC con PHP

Fuente: http://tednologia.com/mvc-en-php/

1.2.3

Servicio de alta disponibilidad.

Vamos a ver como se instala un cluster de alta disponibilidad con Apache2 y Heartbeat con Linux

14

Partimos de la misma configuracin, tenemos dos servidores, cluster01 y cluster02 con las IPs 192.168.2.98 y 192.168.2.99 y una IP flotante 192.168.2.100

Figura 4: Cluster alta disponibilidad

Configuradas ambas mquinas, instalamos los paquetes necesarios:


# apt-get install apache2

En nuestro caso, para la configuracin de Apache editamos /etc/apache2/ports.conf y aadimos la IP flotante a la lnea de NameVirtualHost as:
NameVirtualHost 192.168.2.100:80

Para que Apache no se levante al inicio ya que queremos que el que se encargue de esto es Heartbeat escribimos:
# update-rc.d apache2 remove

Y detenemos el servicio:
# /etc/init.d/apache2 stop

A continuacin instalamos Heartbeat.

15

# apt-get install heartbeat

Y configuramos, estos ficheros de configuracin se encuentran todos en /etc/ha.d/ y disponemos de plantillas para configurarlos en /usr/share/doc/heartbeat/. Podemos tomar ejemplo para configuraciones ms especfica. Para el archivo ha.cf usamos la misma:
logfile /var/log/cluster.log logfacility local0 warntime 5 deadtime 30 initdead 120 keepalive 2 bcast eth0 udpport 694 auto_failback on node cluster01 node cluster02

La explicacin logfile y logfacility: Fichero de log y nivel. warntime: Heartbeat avisar cuando un nodo falle tras 5 segundos. deadtime: Hearbeat confirmar que un nodo ha cado, 30 segundos. initdead: Tiempo mximo que Heartbeat esperar a que un nodo arranque, 60 segundos. keepalive: Especifica cada cuanto tiempo Heartbeat enviar paquetes para comprobar la disponibilidad de los nodos, 2 segundos. Las dos ltimas lneas son las listas de nodos que conforman el cluster.

Para el fichero authkeys que es donde configuramos la comunicacin entre los nodos del clster, tambin para Debian podemos usar la original:
auth 2 2 sha1

Le asignamos los permisos para que slo root tenga acceso.


# chmod 600 /etc/ha.d/authkeys

16

El ltimo fichero es el haresources que queda con este aspecto:


cluster01 IPaddr2::192.168.2.100/24/eth0 apache2

Cambia la forma de escribir la IP flotante que est de una forma ms completa y el script de inicio de Apache que en Debian es apache2. Seguimos la entrada y la propagacin se hace ejecutando el siguiente comando:
# /usr/share/heartbeat/ha_propagate

Levantamos el servicio.
/etc/init.d/heartbeat start

Ya est todo configurado, podemos probar a desactivar la interface de cluster01 y ver como al poco tiempo (el que hemos configurado) se levanta cluster02 para seguir sirviendo pginas. Fuentes: 1. Alta Disponibilidad con Apache2 y Heartbeat en Debian Squeeze. http://www.muspells.net/blog/2011/04/alta-disponibilidad-con-apache2-yheartbeat-en-debian-squeeze/ Cluster HTTP en alta disponibilidad con centos + heartbeat. http://rm-rf.es/cluster-http-en-alta-disponibilidad-con-centos-heartbeat/ 3. Cluster, alta disponiblidad en linux. http://www.linux-party.com/index.php/7384-cluster-alta-disponibilidad-en-linux

2.

1.2.4

Balanceador de carga.

http://www.linux-party.com/index.php/522

1.3 TEST DE CONOCIMIENTOS


Marcado en negrita la solucin. 1. En la arquitectura MVC la presentacin de los datos es tarea de? a. Modelo 17

2.

3.

4.

5.

6.

7.

8.

9.

b. Vista c. Controlador d. Todos los anteriores En la arquitectura MVC el acceso a los datos se encuentra en? a. Modelo b. Vista c. Controlador d. Todos los anteriores En la arquitectura MVC la lgica de la empresa se encuentra en? a. Modelo b. Vista c. Controlador d. Todos los anteriores Queremos conseguir mayor rendimiento en la aplicacin web. Disponemos de ms mquinas. Que escalabilidad utilizaremos? a. Vertical b. Horizontal c. Ambas d. Ninguna Queremos conseguir mayor rendimiento en la aplicacin web. No queremos modificar el software. Que escalabilidad utilizaremos? a. Vertical b. Horizontal c. Ambas d. Ninguna Queremos conseguir mayor rendimiento en la aplicacin web. No queremos modificar el software. Disponemos de ms mquinas, pero no de ms dinero. Que escalabilidad utilizaremos? a. Vertical b. Horizontal c. Ambas d. Ninguna Qu es incorrecto en los clusters? a. Disminuye la disponibilidad b. Aumentar el rendimiento c. Balanceo de carga d. Escalabilidad Que es falso en los patrones en el diseo de aplicaciones. a. Aceleran el desarrollado del software b. Mejoran el mantenimiento c. Mejoran la comunicacin entre analista y programador. d. Mejoran el rendimiento de la aplicacin En un cluster de alta disponibilidad de un servicio web, todos los nodos siempre estn trabajando?. 18

a. Si b. No 10. En un cluster de balanceo de carga de un servicio web, todos los nodos siempre estn trabajando?. a. Si b. No

19