Taller Cluster Apache + PHP + Memcached - Diciembre 2012

32
Taller Cluster Apache + PHP + Memcac hed STR Sistemas - Diciembre 2012

Transcript of Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Page 2: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Comenzamos

hola *S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 3: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Entorno del tallerPara seguir el taller necesitaremos:

• disponer de una máquina 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 presentación y estos ficheros

• ganas y un rato de dedicación

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 4: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

PlanificaciónSi da tiempo la planificación es:

• ¿qué es un servidor web Apache + PHP?

• instalación de servidor Apache + PHP en debian

• configuración de virtualhosts de Apache en debian

• replicación de ficheros con rsync

• replicación de sesiones con rsync

• sesiones con memcached-repcached

• replicación de sesiones con repcached

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 5: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Servidor web Apache + PHP (I)• Apache es uno de los servidores web más

instalados y utilizados en el mundo en todo tipo de organizaciones

• Es totalmente modular, permitiendo ampliar su funcionalidad mediante desarrollos de terceros. Existen módulos estables para todo tipo de aplicaciones (proxy, encriptación, geolocalización, caché, etc.)

• Permite definir virtualhosts, utilizando así el servidor para alojar diferentes sitios web S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 6: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Servidor web Apache + PHP (II)

• PHP, PHP: Hypertext Preprocessor, es un lenguaje de programación interpretado en el lado de servidor

• PHP puede funcionar como módulo de Apache siendo en este caso un lenguaje de servidor que permite la generación de contenido dinámico

• PHP al igual que Apache es modulable (extensiones) lo que permite ampliar su funcionalidad de manera dinámica S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 7: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Servidor web Apache + PHP (III)

• La instalación de apache y PHP junto a MySQL es muy común 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 fácil acceso en las empresas de hosting y de ahí su crecimiento y relevancia actual

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 8: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Servidor web Apache + PHP (IV)

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

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

Stack LAMP

Page 9: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración Apache (I)

Configuración 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 módulo que habilitemos tiene sus propias directivas de configuración y sólo podemos usar directivas de módulos cargados ya que si no fallará el arranque S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 10: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración Apache (II)

• La configuración tiene varios contextos y en cada una de ellas se pueden realizar o no las diferentes configuraciones:

o 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 S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 11: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración Apache (III)

o directory: hace referencia a un directorio o path concreto del servidor web

o 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 configuración de alguno de los contextos anteriores debe permitirlo mediante la directiva AllowOverwrite

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 12: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración Apache (IV)

• Los módulos se cargan mediante la directiva Loadmodule

• En debian la carga de módulos se hace en los ficheros *.load de /etc/apache2/mods-available haciéndose efectivo mediante un enlace simbólico desde /etc/apache2/mods-enabled

• La configuración de módulo se hace de la misma manera pero en los ficheros *.conf

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 13: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración Apache (V)

• Veámos algunas directivas en el fichero de configuración 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 configuracíon de Apache

• veámos un ejemplo

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 14: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración PHP (I)PHP se puede instalar como módulo de

Apache (hay otros modos de funcionamiento):

• Se configura en Apache indicando las extensiones de fichero deben ser tratadas por el módulo de PHP

• Debian realiza toda la configuración básica por defecto al instalar los paquetes

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 15: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Configuración PHP (II)

• La configuración 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 extensión además tiene sus propias directivas que normalmente se configuran en ficheros independientes de /etc/php5/conf.d S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 16: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Sesiones PHP (I)PHP como la mayoría de los lenguajes de

servidor web tiene gestión de sesiones:

• permiten almacenar información del usuario para ser reutilizada entre diferentes peticiones (simulación de aplicación de escritorio)

• por defecto se almacena en ficheros pero se pueden utilizar otros manejadores para su gestión

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 17: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Sesiones PHP (II)

• por defecto se basan en una cookie que el navegador envía en cada petición 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 sesión

• no se debe de abusar del uso de sesión para almacenar información que no sea propia de la sesión S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 18: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (I)

En entornos de producción o con requisito de tener una alta continuidad de funcionamiento los servidores LAMP se pueden configurar en alta disponibilidad:

• modo activo-pasivo con algún 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 S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 19: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

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 sincronización 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

Clúster de servidores - Replicación (II)

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 20: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (IV)

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Balanceador

Cliente

host1 host2 hostn.....

Sistema con balanceo

Page 21: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (V)Activo-pasivo:

• Un servidor (activo) es el que sirve las peticiones de los usuarios

• El otro servidor (pasivo) está en reposo y sólo adopta el rol activo ante una caída o parada controlada del servidor activo

• Es necesario que el servidor pasivo siempre tenga un réplica del servidor activo ya que no sabemos cuándo se producirá el failover

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 22: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (VI)

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 23: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (VII)Es necesario replicar el sistema de ficheros:

• para asegurarnos de que tenemos la misma versión de software en todos los nodos por ejemplo tras actualizaciones

• porque en muchas aplicaciones los usuarios añaden ficheros (documentos, fotos, presupuestos, etc.) que deben estar accesibles desde todos los nodos

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 24: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (VIII)Aunque existen otras soluciones una manera

sencilla de realizar la replicación del sistema de ficheros es el uso de rsync:

• es un sistema de copia incremental (sólo 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 S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 25: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Clúster de servidores - Replicación (IX)También es necesario replicar las sesiones:

• un usuario no puede tener valor distintos de su sesión (pensemos en un carrito de la compra) de un servidor a otro

• se puede hacer mediante sistema de ficheros

• delegando la sesión a otros manejadores como memcached o MySQL es más fácil mantenerlas replicadas

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 26: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

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

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 27: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

memcached - repcached (II)PHP tiene una extensión para memcached:

• permite conectar con servidores memcached

• permite utilizar memcached como sistema de caché para nuestra aplicación

• la extensión aporta un manejador de sesiones a través de memcached

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 28: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

memcached - repcached (III)

memcached no soporta replicación y por eso utilizamos la versión parcheada de nombre repcached:

• permite conectar servidores memcached en replicación master-master

• es totalmente compatible con memcached ya que realmente es simplemente un parche a memcached original

• su configuración es igual añadiendo el servidor remoto del que se desea replicar S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 29: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

memcached - repcached (IV)Utilizando conjuntamente repcached y la

extensión de PHP memcached tenemos por tanto:

• gestión de sesiones en memoria

• replicación de las sesiones entre servidores

Es importante saber:

• si el servidor memcached no funciona las sesiones PHP tampoco lo harán

• al reiniciar o parar el servidor memcached la información se pierde S

TR

Sis

tem

as -

Ta l

ler

Clu

ste

r Apa

che

+ P

HP

+ M

emca

ched

- D

icie

mb r

e 2

012

Page 30: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Incovenientes (I)Los sistemas de replicación utilizados tiene

algunas pegas que debemos conocer:

• las tareas de tipo cron tienen un tiempo mínimo entre ejecuciones de 1 minuto

• en sitios web con mucho volumen de datos es fácil que sea necesario aumentar el tiempo entre sincronizaciones para evitar colapsos de los servidores por acumulación de rsync

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 31: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

Incovenientes (II)

• memcached por ser un sistema en memoria pierde todos los datos al pararse el servicio, incluyendo los datos de sesión PHP de los usuarios

• repcached es un parche no oficial y sólo funciona entre dos servidores no permitiendo por tanto realizar configuraciones más grandes (se puede valorar al replicación circular)

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12

Page 32: Taller Cluster Apache + PHP + Memcached - Diciembre 2012

HASTA PRONTO

GRACIAS

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

@STRSistemas

[email protected]

902027609

www.strsistemas.com

ST

R S

iste

mas

- T

a lle

r C

lust

er A

pach

e +

PH

P +

Mem

cach

ed -

Dic

iem

b re

20

12