taller cluster apache + php + memcached - diciembre 2012
TRANSCRIPT
Taller Cluster Apache + PHP + Memcached
STR Sistemas - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
HASTA PRONTO
GRACIAS
Por favor, tanto si has hecho el taller presencial como si lo has seguido online rellena esta encuesta.
@STRSistemas
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