Está en la página 1de 32

Taller Cluster Apache + PHP + Memcached

STR Sistemas - Diciembre 2012

Comenzamos

Entorno del taller


Para seguir el taller necesitaremos: disponer de una mquina virtual Virtualbox (host1) con Debian 6.0 Squeeze creada a partir de la imagen descargable desde aqu (que ser clonada en el desarrollo del taller) disponer de los paquetes Linux o de software necesarios esta presentacin y estos ficheros ganas y un rato de dedicacin

Planificacin
Si da tiempo la planificacin es: qu es un servidor web Apache + PHP? instalacin de servidor Apache + PHP en debian configuracin de virtualhosts de Apache en debian replicacin de ficheros con rsync replicacin de sesiones con rsync sesiones con memcached-repcached

Servidor web Apache + PHP (I)

Apache es uno de los servidores web ms instalados y utilizados en el mundo en todo tipo de organizaciones Es totalmente modular, permitiendo ampliar su funcionalidad mediante desarrollos de terceros. Existen mdulos estables para todo tipo de aplicaciones (proxy, encriptacin, geolocalizacin, cach, etc.) Permite definir virtualhosts, utilizando as el servidor para alojar diferentes sitios web

Servidor web Apache + PHP (II)

PHP, PHP: Hypertext Preprocessor, es un lenguaje de programacin interpretado en el lado de servidor PHP puede funcionar como mdulo de Apache siendo en este caso un lenguaje de servidor que permite la generacin de contenido dinmico PHP al igual que Apache es modulable (extensiones) lo que permite ampliar su funcionalidad de manera dinmica

Servidor web Apache + PHP (III)

La instalacin de apache y PHP junto a MySQL es muy comn en servidores web y se suele conocer como stack o servidor LAMP (Linux, Apache, MySQL, PHP) El stack LAMP tiene una gran acogida en la comunidad open source por su sencillez y fcil acceso en las empresas de hosting y de ah su crecimiento y relevancia actual

Servidor web Apache + PHP


(IV)
Stack LAMP

Imagen de Ivan Pepelnjak en http://blog.ioshints.info/2012/08/pvlan-vxlan-and-cloud-application.html

Configuracin Apache (I)


Configuracin de Apache: El servidor apache se configura a partir de un fichero que en debian se encuentra ubicado en /etc/apache2/apache2.conf (en otras distros normalmente es /etc/httpd/httpd.conf) Cada mdulo que habilitemos tiene sus propias directivas de configuracin y slo podemos usar directivas de mdulos cargados ya que si no fallar el arranque

Configuracin Apache (II)

La configuracin tiene varios contextos y en cada una de ellas se pueden realizar o no las diferentes configuraciones:
server config: es la configuracio global del servidor web y sus valores son utilizados salvo que sean redefinidos en otros contextos o virtual host: define entornos web independientes (como si se tratase de servidores web diferentes por ejemplo para diferentes dominios), en los que se pueden definir configuraciones personalizadas
o

Configuracin Apache (III)


o o o

directory: hace referencia a un directorio o path concreto del servidor web htaccess: en un fichero que se lee en tiempo real en las peticiones web que permite al programador modificar diferentes configuraciones del servidor web en tiempo real sin necesidad de depender del administrador del servidor. Para que funcione la configuracin de alguno de los contextos anteriores debe permitirlo mediante la directiva AllowOverwrite

Configuracin Apache (IV)

Los mdulos se cargan mediante la directiva Loadmodule En debian la carga de mdulos se hace en los ficheros *.load de /etc/apache2/modsavailable hacindose efectivo mediante un enlace simblico desde /etc/apache2/modsenabled La configuracin de mdulo se hace de la misma manera pero en los ficheros *.conf

Configuracin Apache (V)

Vemos algunas directivas en el fichero de configuracin real

Para configurar un Virtual Host se define un bloque <VirtualHost></VirtualHost>: el DocumentRoot indica donde se encuentran los ficheros del entorno web se puede redifinir practicamente toda la configuracon de Apache

Configuracin PHP (I)


PHP se puede instalar como mdulo de Apache (hay otros modos de funcionamiento): Se configura en Apache indicando las extensiones de fichero deben ser tratadas por el mdulo de PHP Debian realiza toda la configuracin bsica por defecto al instalar los paquetes

Configuracin PHP (II)

La configuracin propia de PHP en debian se hace en el fichero /etc/php5/apache2/php.ini (en otras distros est en /etc/php.ini) Veamos algunas directivas importantes directamente en el fichero php.ini Cada extensin adems tiene sus propias directivas que normalmente se configuran en ficheros independientes de /etc/php5/conf.d

Sesiones PHP (I)


PHP como la mayora de los lenguajes de servidor web tiene gestin de sesiones: permiten almacenar informacin del usuario para ser reutilizada entre diferentes peticiones (simulacin de aplicacin de escritorio) por defecto se almacena en ficheros pero se pueden utilizar otros manejadores para su gestin

Sesiones PHP (II)

por defecto se basan en una cookie que el navegador enva en cada peticin al servidor web las cookies pueden compartirse entre subdominios de un mismo dominio pero no entre diferentes dominios delimitando as el mbito de uso de una sesin no se debe de abusar del uso de sesin para almacenar informacin que no sea propia de la sesin

Clster de servidores Replicacin (I)


En entornos de produccin o con requisito de tener una alta continuidad de funcionamiento los servidores LAMP se pueden configurar en alta disponibilidad: modo activo-pasivo con algn sistema de failover tipo heartbeat o pacemaker modo activo-activo mediante balanceo de carga En cualquiera de los dos casos es necesario replicar datos y sesiones entre los servidores

Clster de servidores Replicacin (II)


Balanceo: un nodo que est entre los usuarios y los clientes reparte las peticiones entre los diferentes servidores web para evitar errores y tener requisitos de sincronizacin menores es recomendable que haya persistencia en el balanceo a pesar de la persistencia los servidores deben replicarse para otros usuarios y/o para un posible cambio de enrutamiento

Clster de servidores Replicacin (IV)


Sistema con balanceo
Cliente

Balanceador

host1

host2

.....

hostn

Clster de servidores Replicacin (V)


Activo-pasivo: Un servidor (activo) es el que sirve las peticiones de los usuarios El otro servidor (pasivo) est en reposo y slo adopta el rol activo ante una cada o parada controlada del servidor activo Es necesario que el servidor pasivo siempre tenga un rplica del servidor activo ya que no sabemos cundo se producir el failover

Clster de servidores Replicacin (VI)

Clster de servidores Replicacin (VII)


Es necesario replicar el sistema de ficheros: para asegurarnos de que tenemos la misma versin de software en todos los nodos por ejemplo tras actualizaciones porque en muchas aplicaciones los usuarios aaden ficheros (documentos, fotos, presupuestos, etc.) que deben estar accesibles desde todos los nodos

Clster de servidores Replicacin (VIII)


Aunque existen otras soluciones una manera sencilla de realizar la replicacin del sistema de ficheros es el uso de rsync: es un sistema de copia incremental (slo copia los cambios) que puede utilizarse entre servidores de manera segura su uso es sencillo desde la consola de comandos puede automatizarse mediante el uso del cron

Clster de servidores Replicacin (IX)


Tambin es necesario replicar las sesiones: un usuario no puede tener valor distintos de su sesin (pensemos en un carrito de la compra) de un servidor a otro se puede hacer mediante sistema de ficheros delegando la sesin a otros manejadores como memcached o MySQL es ms fcil mantenerlas replicadas

memcached - repcached (I)


memcached es un sistema distribuido de cach en memoria: se utiliza para agilizar la carga de datos aligera la base de datos ya que puede evitar muchas consultas a la misma es un servidor muy estable y reconocido

memcached - repcached (II)


PHP tiene una extensin para memcached: permite conectar con servidores memcached permite utilizar memcached como sistema de cach para nuestra aplicacin la extensin aporta un manejador de sesiones a travs de memcached

memcached - repcached
(III)
memcached no soporta replicacin y por eso utilizamos la versin parcheada de nombre repcached: permite conectar servidores memcached en replicacin master-master es totalmente compatible con memcached ya que realmente es simplemente un parche a memcached original su configuracin es igual aadiendo el servidor remoto del que se desea replicar

memcached - repcached
(IV)
Utilizando conjuntamente repcached y la extensin de PHP memcached tenemos por tanto: gestin de sesiones en memoria replicacin de las sesiones entre servidores Es importante saber: si el servidor memcached no funciona las sesiones PHP tampoco lo harn al reiniciar o parar el servidor memcached la informacin se pierde

Incovenientes (I)
Los sistemas de replicacin utilizados tiene algunas pegas que debemos conocer: las tareas de tipo cron tienen un tiempo mnimo entre ejecuciones de 1 minuto en sitios web con mucho volumen de datos es fcil que sea necesario aumentar el tiempo entre sincronizaciones para evitar colapsos de los servidores por acumulacin de rsync

Incovenientes (II)

memcached por ser un sistema en memoria pierde todos los datos al pararse el servicio, incluyendo los datos de sesin PHP de los usuarios repcached es un parche no oficial y slo funciona entre dos servidores no permitiendo por tanto realizar configuraciones ms grandes (se puede valorar al replicacin circular)

HASTA PRONTO

GRACIAS
www.strsistemas.com

@STRSistemas
info@strsistemas.com 902027609

Por favor, tanto si has hecho el taller presencial como si lo has seguido online rellena esta encuesta.

También podría gustarte