Vous êtes sur la page 1sur 25

Universidad de El Salvador

Facultad de Ingeniera y Arquitectura


Escuela de Ingeniera de Sistemas Informticos
Comunicaciones II
Gua de Laboratorio No. 6
Servicios Web
Alto rendimiento y Alta Disponibilidad
v3
Objetivos de aprendizaje:
Instalar y configurar de Apache Web Server, como servidor de servicios Web.
Configurar servicios web seguros con SSL
Configurar servicios de disco duro en red con glusterFs
Configurar servicios de sessiones en red con Memcached
Configurar servicios web de alto rendimiento.
Acceder a carpetas remotas a travs de NFS.
I. Introduccin:
Apache es un servidor http de altas prestaciones y versatilidad, que permite levantar servicios web
simples as como; sitios web seguros utilizando certificados SSL. De igual forma Apache dispone de
prestaciones para crear Sitios Web de alta concurrencia, a travs de diferentes servidores corriendo
dicha aplicacin.
Esta diseado de forma modular, de tal forma que permite adaptarlo a soluciones simples como
avanzadas. Tanto en mdulos de multi procesamiento como mdulos para acciones especificas.
Mdulo de bsicos y multiprocesamiento
Mdulo
Descripcin
Core

Este mdulo es el bsico de apache y siempre ser instalado.

mpm_common

Incluye una coleccin de directas que se pueden implementar


cuando se dispone de equipos de ms de un procesador, o con
soporte para mtiples hilos.

prefork

Implementa una modalidad de trabajo sin hilos.

worker

Es un mdulo de multiprocesamiento con un hbrido de trabajo en


multi-hilos, es el ms utilizado en portales web y aplicaciones
empresariales.

Gua No. 6 Servicios Web -v3-DM 1/25

Otros mdulos importantes opcionales


Mdulo
Descripcin
mod_proxy

Este mdulo implementa una especie de proxy/gateway para


Apache. Operando en los protocolos ftp, connect(ssl)m http version
1.0 y 1.1. Puede ser configurador para conectar diversos equipos
internos a travs de un portal balanceador externo.

mod_proxy_balancer

Para operar requiere que este activo el mdulo mod_proxy. Se


presenta como un algoritmo para asignar a trabajo a servidores
internos, a partir de uno balancerador que correl el mdulo.

mod_rewrite

Utiliza reglas para reescribir peticiones de URL al vuelo. Soporta un


nmero ilimitado de reglas.

mod_ssl

Este mdulo permite la implementacin del protocolo https,


invocando certificados de seguridad SSL. Opera por default en el
puerto 443.

mod_dav

Esto mdulo porvee capacidad para acceder tipo WebDav. Esta


extensin permite crear, mover, copiar y borrar coleccin de
recursos remotos en un servidor web.

Existe una diversidad de mdulos que pueden utilizarse con Apache, segn sea la necesidad, para
mayor referencia puede visitar el sitio de Apache Web Server.
II. Configuracin de Apache Web Server Bsico
Apache web server dispone de un arbol de directorio bsico para su configuracin. De tal manera de
poder atender servicios http en el puerto 80 por default.
2.1. Instalacin de Apache
La instalacin del servidor Apache es relativamente simple, depender en gran medida si requiere que
soporte lenguajes de programacin como php u otro. Para una instalacin simple, sin soporte para
lenguajes de programacin, haga los siguiente:
#aptgetinstallapache2
Esto instalar apache con los mdulos bsicos. Si su servidor tiene mltiples procesadores el mdulo
worker ser activado. Si requiere activar php como lenguaje de programacin instale el mdulo que da
soporte a este lenguaje de la siguiente manera:
#aptgetinstalllibapache2modphp5
Tome en cuenta que la instalacin de otros componentes de php5 pueden ser necesarios para tener un
servicio funcional que soporte este lenguaje. Por ejemplo : php5myslql,ph5pgsql,php5
memcached, etc.
Algunos de estos mdulos especficos del lenguaje de programacin sern necesarios, en las partes
siguientes.
Gua No. 6 Servicios Web -v3-DM 2/25

2.2. Directotorios y archivos de trabajo


Directorio / Archivo

Descripcin

/ect/apache2

Directorio principal de configuracin de Apache.

/usr/share/doc/apache2

Directorio con ejemplos y material de documentacin de


Apache.

/etc/apache2/sites-available

Directorio con los sitios que se han configurador y que


pueden ponerse activos.

/etc/apache2/sites-enable

Directorio con los sitios que han sido activados para ser
servidos a travs del protocolo respectivo.

/etc/apache2/mods-available

Mdulos instalados y que pueden ser activados.

/etc/apache2/mods-enabled

Mdulos que han sido activados y estn en operacin

/etc/apache2/apache2.conf

Archivo principal de configuracin de apache. Contiene


valores como nmero de mximo de conexiones permitidas,
entro otros detalles.

/etc/apache2/ports.conf

Archivo que define los puertos en los cuales estar


escuchando apache, tanto bsicos como seguros.

2.3. Configurando un portal web


A continuacin se configurar, el servicio web para el dominio tortuga.com, de tal manera que pueda
atender peticiones a travs del protocolo http.
/etc/apache2/sitesavailable/tortuga.conf
<VirtualHost*:80>
ServerNametortuga.com
ServerAliaswww.tortuga.com
ServerAdminwebmaster@tortuga.com
DocumentRoot/var/www/html/tortuga
<Directory/var/www/tortuga>
OptionsIndexesFollowSymLinks
AllowOverrideNone
Requireallgranted
</Directory>
ErrorLog${APACHE_LOG_DIR}/tortugaerror.log
CustomLog${APACHE_LOG_DIR}/tortugaaccess.logcombined
</VirtualHost>

Note que se ha creado un archivo de configuracin adicional a los que existen en el directorio. Al cual
Gua No. 6 Servicios Web -v3-DM 3/25

se le ha llamado tortuga.conf
Tome en cuenta que la directiva DocumenRoot invoca un directorio real, en caso de no existir deber
crearlo. En en dicho directorio donde deber disponer de los archivos y aplicaciones web que desea
acceder desde una navegador a travs del servidor.
2.4. Activando el potal web
Luego que se ha creado el archivo de configuracin, deber activarse en el archivo que es leido por
apache, para ello se hace de la siguiente forma:
#a2ensitetortuga.conf

Esta orden buscar en el directorio donde se definen los sitios modsavailable y crear un enlace
simblico al directorio sitesenabled, para poner a disposicin el sitio. El archivo que se le pasa
como parmetro es el que se ha definido anterioremente.
2.3. Reiniciando el servidor
Luego de haber efectuado los cambios deber reiniciarse el servidor web.
#/etc/init.d/apache2restart
Esta orden leer toda la configuracin de nuevo del directorio /etc/apache2 as como el directorio
siteseanbles, y pondr en operacin el portal recin configurado. Cada cambio realizado en un
archivo de configuracin inplicar reiniciar el servicio web.
2.5. Probando el sitio
Para probar el sitio, bastar con abrir un navegar web, en la barra de direcciones escribir el url:
localhost
Deber de mostrar el contenido alojado en la carpeta /var/www/html/tortuga
III. Configuracin de Apache Web Seguro
En ocasiones se requiere que aplicaciones que son accesidas a a travs de un servidor web, tengan
cierto grado de seguridad. Para ello Apache se apoya en los paquetes openssl, para la creacin de
certificados de seguridad encriptados, que son pasados como parmetros en la configuracin, de tal
manera de encriptar la conexin entre el cliente y el servidor, a travs de SSL.
3.1. Instalando aplicacin para creacin de certificados.
Como se menciona en el prrafo anterior, la aplicacin que permite la creacin de certificados de
Gua No. 6 Servicios Web -v3-DM 4/25

seguridad es openssl y se instala como se indica a continuacin.


#aptgetinstallopenssl
3.2. Creando certificados de seguridad
A continuacin se describir la forma de crear certificados de seguridad robustos, utilizando un llave
de mas de 1024 bits, de tal manera que se cuente con un modelo de encriptacin potente.
3.2.1 Crear una carpeta ssl en el directorio de apache.
#cd/etc/apache2
#mkdirssl
#cdssl
3.2.2.Creando el certificado y la llave privada de la autoridad certificadora
#opensslreqx509newkeyrsa:2048days365keyoutcakey.pemoutcacert.pemnodes

Al efectuar esta accin de forma interactiva, la orden le pedir los datos que se detallan a continuacin.
CountryName:SV
StateorProvinceName:ElSalvador
LocalityName:SanSalvador
OrganizationName:TortugaS.A.deC.V.
OrganizationalUnitName:Informatica
CommonName:ca.tortuga.com
EmailAddress:informatica@tortuga.com

Note que en una sola orden se crear el certificado de la entidad certificadora CA llamado cacert.pem,
as como la llave con la cual se firmarn los certificados. La llave tiene un valor de 2048 bits de
tamao.
3.2.3. Creando el certificado para el dominio principal tortuga.com
#ddif=/dev/urandomof=randseed.bincount=2
#opensslgenrsaoutclaveprivada.pemrandrandseed.bin4096
#opensslreqnewkeyclaveprivada.pemoutcertificado.pem

La ltima orden nuevamente volver a pedir la informacin respecto al dominio, ahora si ser
importante brindar la informacin completa del dominio que se proteger.
CountryName:SV
StateorProvinceName:ElSalvador
LocalityName:SanSalvador
OrganizationName:TortugaS.A.deC.V.
OrganizationalUnitName:Informatica
CommonName:tortuga.com

Gua No. 6 Servicios Web -v3-DM 5/25

EmailAddress:informatica@tortuga.com

Note que el CommonName, ahora se llama tal cual el dominio que se desea proteger: tortuga.com
3.2.4 Firmando el certificado
Ahora que se ha creado el certificado que ser invocado desde apache, deber firmarse con la entidad
certificadora propia creada, a travs de cacert.pem, como se muestra a continuacin.
Para ello ser necesario contar con un archivo de configuracin bsico, que se le pasar como
parmetro a la orden. Para lo cual creelo de la siguiente forma.
#nanoconfigservidor.cnf
Llnelo con la informacin siguiente:
basicConstraints=critical,CA:FALSE
extendedKeyUsage=serverAuth
Luego gurdelo y procesa con la siguiente orden, para firmar el certificado que ser invocado por
Apache.
#opensslx509CAcacert.pemCAkeycakey.pemreqextfileconfigservidor.cnf
incertificado.pemdays365CAcreateserialsha1outcertificadoservidor.pem

Tome en cuenta que es una sola orden. Note que que al certificado creado en el punto anterior, ahora se
esta firmando a travs de cacert.pem as como la llave cakey.pem. Note que el archivo creado se
le ha pasado como parmetro el archivo recin creado.
Si se ha completado con xito hasta esta parte, ya se tiene capacidad para vincular los certificados en la
configuracin de apache.
3.3. Activando mdulo SSL
Para poder usar los certificados de seguridad recin creados, ser necesario activar el mdulo SSL en
apache, para ello realice la siguiente accin:
#a2enmodssl

3.4. Creando el archivo de configuracin con SSL


Para levantar finalmente la configuracin a travs de SSL, deber crear el archivo de configuracin con
la correspondiente informacin referente a los certificados recin creados, como se muestra a
continuacin.

Gua No. 6 Servicios Web -v3-DM 6/25

/etc/apache2/sitesavailable/tortugassl.conf
<IfModulemod_ssl.c>
<VirtualHost_default_:443>
SSLEngineOn
SSLCertificateKeyFile/etc/apache2/ssl/claveprivada.pem
SSLCertificateFile/etc/apache2/ssl/certificadoservidor.pem
SSLCACertificateFile/etc/apache2/ssl/cacert.pem
ServerAdminwebmaster@tortuga.om
DocumentRoot/var/www/html/tortuga
<Directory/var/www/html/tortuga>
SSLRequireSSL
OptionsFollowSymLinks
AddOutputFilterByTypeDEFLATEtext/html
</Directory>
ErrorLog${APACHE_LOG_DIR}/tortugasslerror.log
CustomLog${APACHE_LOG_DIR}/tortugasslaccess.logcombined
BrowserMatch"MSIE[26]"\
nokeepalivessluncleanshutdown\
downgrade1.0forceresponse1.0
#MSIE7andnewershouldbeabletousekeepalive
BrowserMatch"MSIE[179]"ssluncleanshutdown
</VirtualHost>
</IfModule>

No te que se le est pasando como parmetro los archivos recin creados. El certificado del servidor, la
llave, as como la entidad certificadora. La otra configuracin son parametros iguales a un servidor
normal sin SSL.
3.4.5. Pruebas
Para poder realizar las pruebas respectivas deber activar el sitio y reiniciar el servicio como se indica
en prrafos anteriores y verificar el servicio accediendo a travs de una navegador web y escribiendo en
la barra de direcciones la direccin:
https://localhost
El servicio deber responderle con el contenido de la carpeta /var/www/html/tortuga
3.5. Creando un certificado Cliente.
En ocasiones es importante protoger las conexiones tanto del lado del servidor como del lado del
cliente, para ello, apoyados siempre en SSL, creamos un certificado de seguridad para el cliente, y se le
configura al servidor para en las conexiones a ese servicio el cliente se certifique ante l, a travs de un
certificado vlido. En otras palabras, si el cliente tiene instalado el certificado en el navegador no podr
acceder a los contenidos proveidos por el servidor web.
Gua No. 6 Servicios Web -v3-DM 7/25

Un escenario donde esto sea requerido podra ser los equipos de los cajeros en un banco que acceden a
una aplicacin web interna a travs de la red.
3.5.1. Creando el certificado cliente
Similar a como se cre el certificado para el servidor, se crea el certificado cliente, el cual deber
firmarse posteriormente por la entidad certificadora para que lo valide.
#ddif=/dev/urandomof=randseed.bincount=2
#opensslgenrsaoutclavecliente.pemrandrandseed.bin4096
#opensslreqnewkeyclavecliente.pemoutcertificadoclientereq.pem

Nuevamente pedir los datos:


CountryName:SV
StateorProvinceName:ElSalvador
LocalityName:SanSalvador
OrganizationName:TortugaS.A.deC.V.
OrganizationalUnitName:Informatica
CommonName:tortuga.com
EmailAddress:informatica@tortuga.com

Tenga en cuenta que el CommonName deber corresponder con el que fue creado el certificado del
servidor en este caso: tortuga.com.
3.5.2. Firmando el certificado cliente
Al igual que el certificado del servidor, el certificado de cliente deber firmarse por la entidad
certificadora propia a travs del cacert.pem y la clave cakey.pem.
Deber pasar como parmetro el archivo de configuracin siguiente:
/etc/apache2/ssl/configcliente.cnf
basicConstraints=critical,CA:FALSE
extendedKeyUsage=clientAuth

Note que la configuracin de este archivo es equivalente a la del servidor; en tal caso lo que cambia es
la opcin extendedKeyUsage=clientAuth
#opensslx509CAcacert.pemCAkeycakey.pemreqincertificadocliente
req.pemdays365extfileconfigcliente.cnfCAcreateserialsha1out
certificadocliente.pem

Tome en cuenta que es una sola lnea.

Gua No. 6 Servicios Web -v3-DM 8/25

3.5.3. Exportando el certificado cliente


Luego de crearlo y firmarlo se proceder a exportarlo a un formato que el navegador web puda leer,
para ello se hace de la siguiente forma.
#opensslpkcs12exportincertificadocliente.peminkeyclavecliente.pem
certfilecacert.pemoutcliente.p12

Como es un certificaodo de seguridad, al ejecutar la orden le pedir un clave, que ser requerida
cuando est importando el certificado a travs de un navegador web. Escriba como clave cos215.
3.5.4. Activando Apache para que pida certificado cliente
Luego de concluir el proceso, deber activarse en la configuracin del portal seguro, para que Apache
solicite un certificado al cliente que se conecta al servicio, para ello, modifique el archivo de
configuracin tortugassl.conf. Agregando las lneas marcadas en color.
/etc/apache2/sitesavailable/tortugassl.conf
<IfModulemod_ssl.c>
<VirtualHost_default_:443>
SSLEngineOn
SSLCertificateKeyFile/etc/apache2/ssl/claveprivada.pem
SSLCertificateFile/etc/apache2/ssl/certificadoservidor.pem
SSLCACertificateFile/etc/apache2/ssl/cacert.pem
SSLVerifyClientrequire
SSLVerifyDepth2
SSLOptions+FakeBasicAuth
SetEnvIfUserAgent".*MSIE.*"nokeepalivessluncleanshutdown
ServerAdminwebmaster@tortuga.om
DocumentRoot/var/www/html/tortuga
<Directory/var/www/html/tortuga>
SSLRequireSSL
OptionsFollowSymLinks
AddOutputFilterByTypeDEFLATEtext/html
</Directory>
ErrorLog${APACHE_LOG_DIR}/tortugasslerror.log
CustomLog${APACHE_LOG_DIR}/tortugasslaccess.logcombined
BrowserMatch"MSIE[26]"\
nokeepalivessluncleanshutdown\
downgrade1.0forceresponse1.0
#MSIE7andnewershouldbeabletousekeepalive
BrowserMatch"MSIE[179]"ssluncleanshutdown
</VirtualHost>
</IfModule>

Gua No. 6 Servicios Web -v3-DM 9/25

Como ha modificado el archivo deber reiniciar el servicio para que los cambios tengan efecto.
3.5.5. Importar Certificado de Seguridad
Para poder conectarse al servidor, deber configurar el navegador cliente importando el certificado de
seguridad creado en la seccin anterior.
IV. Apache Web Server con alta Disponibilidad/Alto Rendimiento
En portales web o aplicaciones web con alta concurrencia, se vuelve necesario, configurar arquitecturas
que permitan escalar de tal manera de disponer de mayor nmero de conexiones hacia los servicios.
Apache dispone mdulos capaces de implementar algoritmos que le permiten realizar un balanceo de
carga a travs de un pool de conexiones, y desviarlas para ser procesadas a mltiples servidores, como
se detalla en la imagen siguiente:

Internet

Balanceador
Apache
DMZ

Apache1
Servidor
real

Apache2
Servidor
real

Apache3
Servidor
real

Apache4
Servidor
real

Si se toma en cuenta que cada servidor podra atender 150 conexiones, esto quiere decir que el servidor
en su conjunto podr anteder 150*4, en su defecto si se agregan mas servidores numero-mximo * n
servidores.
Para efectos prcticos de esta gua se llamar Balanceador al que admite las peticiones y Nodos a los
Gua No. 6 Servicios Web -v3-DM 10/25

servidores reales.
En configuraciones reales fuera de laboratorio, siempre es necesario contar con ms de un
Balanceador, de tal manera que pueda entrar en operacin en caso que el Balanceador primario falle.
Por lo general este mecanismo se hace a travs de Heartbeats+IPVS; que con siste una
direccin IP virtual que es asignada a cada balanceador para tomar el control del trfico, este
componente querar fuera de esta gua pero se detalla para que pueda documentarse si lo desea.
Para la configuracin siguiente se asumir la infraestructura siguiente:
Servidor

Direccion IP

Balanceador Externa

172.16.0.1

Balanceador Interna

172.16.100.1

Nodo1

172.16.100.2

Nodo2

172.16.100.3

4.1 Configurando Balanceador


Como es el que estar al frente, este deber tener configurada las dos interfaces de red, segn el detalle
del cuadro anterior, con la correspondiente direccin IP.
#ifconfigeth0172.16.0.1netmask255.255.255.0up
#ifconfigeth1172.16.100.1netmask255.255.255.0up

El balanceador ser el encargado de atender las peticiones de servicios http en la interfaz de red eth0,
para ello ser necesario activar en dicho servidor algunos mdulos como se detalla a continuacin.
4.1.1. Activando mdulos
#a2enmodproxy
#a2enmodproxy_http
#a2enmodproxy_balancer
#a2enmodproxy_ftp

4.1.2. Crear archivo de configuracin.


El archivo de configuracin har referencia a los servidores internos reales, para tal caso se asumir la
inform

Gua No. 6 Servicios Web -v3-DM 11/25

/etc/apache2/sitessitesavailable/tortugabalanceador.conf
<VirtualHost*:80>
ServerAdmininformatica@tortuga.com
ServerNametortuga.com
ServerAliaswww.tortuga.com
DocumentRoot/var/www/html
ProxyRequestsOff
<Proxy*>
Orderallow,deny
Allowfromall
</Proxy>
#Balanceadordecarga
ProxyPass/balancermanager!
ProxyPass/balancer://clusters/stickysession=PHPSESSIDnofailover=Off
<Proxybalancer://clusters>
BalancerMemberhttp://172.16.100.2route=a
BalancerMemberhttp://172.16.100.3route=b
ProxySetlbmethod=byrequests
</Proxy>
#ProxyPassReverse/balancer://clusters/
<VirtualHost>

Note que el archivo de configuracin es simple, la seccin Proxy balancer, se le indica como parmetro
de configuracin las direcciones IP de los nodos que atendern de forma real las peticiones que llegan
al servidor.
La directiva ProxySet, determina el algoritmo que ser utilizado para atender las peticiones en este
caso, segn byrequest; es decir, la primera peticin que llega se la pasar al Nodo1 y la segunda
peticin al Nodo2 y as sucesivamente. Para mayor referencia de los mtodos y algoritmo de
tratamiento de peticiones remtase a la documentacin de Apache respecto a este mdulo.
El parmetro pasado como route=a es un identificador que ser reconocido de forma nica para
poder enviarle peticiones y algunos parmetros de configuracin. Dicho parmetro deber coincidir
cuando se configure el Nodo correspondiente.
Para el caso de aplicaciones como Moodle, la directiva ProxyPreserveHost, debe desactivarse, si no
Moodle interpreta que las peticiones de acceso son de distinto sitio.
En caso de necesitar ms VirtualHost, deber establecerse un archivo adicional y crear un puerto
distinto para que pueda ser alcanzado por el proxy.
4.1.3. Activando el portal web
Como se ha indicado en las secciones anteriores activar el portal web, implica la orden siguiente:
#a2ensitetortugabalanceador.conf

Gua No. 6 Servicios Web -v3-DM 12/25

Luego deber reiniciar el servidor para que los cambios tengan efecto.
4.2. Configurando Nodos
Recuerde que los nodos son los Servidores Apache que atendern las peticiones de forma real,
transferidas por el balanceador. Como se pretende tener una aplicacin completamente funcional, para
ello ser necesario la instalacin de ciertos paquetes que permitirn de forma real tener servicios.
4.2.1. Configurando Apache Nodo1
En el Nodo 1 deber configurar el archivo correspondiente para activar los servicios web en escucha
del balanceador, como se muestra en el archivo siguiente.
/etc/apache2/sitessitesavailable/tortuganodo.conf
<VirtualHost *:80>
ServerAdmin informatica@tortuga.com
ServerName tortuga.com
RewriteEngine On
RewriteRule .* - [CO=PHPSESSID.balancer.a:.172.16.100.2]
DocumentRoot /mnt/tortuga/html
<Directory /mnt/tortuga/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Es de tomar en cuenta que en este archivo de configuracin la sessin que ser atendida por el Nodo
deber corresponder al parmetro router configurado en el balanceador, como se detalla en la lnea:
RewriteRule .* - [CO=PHPSESSID.balancer.a:.172.16.100.2]

4.2.2. Activando mdulos en Nodo


Note que se est haciendo referencia al mdulo Rewrite, el cual deber ser activado, como se detalla a
continuacin.
#a2enmodrewrite

4.2.3. Configurando Apache Nodo2


En el Nodo 1 deber configurar el archivo correspondiente para activar los servicios web en escucha
del balanceador, como se muestra en el archivo siguiente.
Gua No. 6 Servicios Web -v3-DM 13/25

/etc/apache2/sitessitesavailable/tortuganodo.conf
<VirtualHost *:80>
ServerAdmin informatica@tortuga.com
ServerName tortuga.com
RewriteEngine On
RewriteRule .* - [CO=PHPSESSID.balancer.b:.172.16.100.3]
DocumentRoot /mnt/tortuga/html
<Directory /mnt/tortuga/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Al igual que el Nodo1, es de tomar en cuenta que en este archivo de configuracin la sessin que ser
atendida por el Nodo deber corresponder al parmetro router configurado en el balanceador, como se
detalla en la lnea:
RewriteRule .* - [CO=PHPSESSID.balancer.b:.172.16.100.3]

4.2.4. Activando mdulos en Nodo


Note que se est haciendo referencia al mdulo Rewrite, el cual deber ser activado, como se detalla a
continuacin.
#a2enmodrewrite

Luego de haber configurado deber activar los sitios como se ha indicado en secciones anteriores y
reiniciar el servicio de Apache en cada uno de los Nodos.
4.2.5. Pruebas
Para realizar las pruebas bastar con crear la carpeta especifica en el DocumentRoot de cada Nodo, un
archivo diferente, y hacerle peticiones al balanceador, ver como segn cada peticin, intercambia entre
el Nodo1 y Nodo2.
4.3. Memcached para almacemiento de Sessiones
Los servicios configurador en la secciones anteriores con Alta Diponibildiad y Alto Desempeo, sern
perfectamente funcionales en aplicaciones Web estticas, es decir que no requieran autenticacin.
Cuando se dispone de aplicaciones web ms sofisticadas es necesario contar con un mecanismo que
guarde la sessin de tal manera que los nodos no tengan necesidad de preocuparse por ellas, si no mas
bien, mientras un usuario se ha autenticado en un nodo, los dems puedan leer el dato de la sesin sin
necesidad de volver a solicitar que el usuario vuelva a autenticarse.
Gua No. 6 Servicios Web -v3-DM 14/25

Memcached es un servicio que implementa sessiones; entre otras tareas. Posee una velocidad
extraordinaria para atender peticiones ya que los datos son almacenados en Memoria Ram, y no en
disco de tal manera de disponer de ellos inmediatamente. Servicios renombrados en la nube como
Twitter, entre otros utilizan esta herramienta para el tratamiento de sus sesiones.
4.3.1. Instalar Servidor Memcached
#aptgetinstallmemcached
Si todo marcha bien se instalar el servicio y se habilitar el socket segn cada direccion IP que posea
el servidor en el puerto 11211. Puede acceder al archivo de configuracin en la ruta:
/etc/memcached/memcached.conf
Hasta este momento se tiene activo el servicio que atender peticiones de sesin desde servidores
Apache. Desde el lado de la aplicacin deber indicrsele de que forma deber atender dichas
peticiones.
4.4. Lenguaje de programacin Web
Como las aplicaciones web son tan populares en la actualidad implementar un servicio de alta
concurrencia y alta disponibilidad tiene sentido cuando se accede a una aplicacin que tenga alta
concurrencia, para ello a continuacin se instalar PHP5, y se configurar para que las sessiones sean
guardadas en un servidor Memcached en lugar de archivos locales.
4.4.1. Instalando paquetes PHP5 en cada uno de los Nodos
#apt-get install php5 php5-ldap php5-mysql php5-intl php5-gd php5-ldap php5-pgsql
php5-mssql php5-curl php5-xmlrpc php-pear php-apc php5-recode php5-memcached

De todos los paquetes que se pasan para instalar php5-memcached es el que nos dar la capacidad de
que PHP5 pueda almacenar las sesiones en un servidor Memcached. Para otros lenguajes de
programacin deber remitirse a la documentacin del lenguaje para realizar esta tarea.
4.4.2. Configurando el guardado de sesiones de cada Nodo en el Servidor Memcached
Luego de instalados deber de decirle a cada Nodo donde deber buscar la sesin creada por usuario,
para ello deber editar el archivo de configuracin de PHP, con la orden siguiente:
#nano /etc/php5/apache2/php.ini

Buscar en el archivo la sessin que hace referencia a la directiva session.save_handler que


actualemte deber aparecer para guardar en archivos y cambiar por las lneas siguientes:
session.save_handler = memcache
session.save_path = "tcp://172.16.100.4:11211?
persistent=1&weight=1&timeout=1&retry_interval=15"

Gua No. 6 Servicios Web -v3-DM 15/25

Note que la ruta TCP apunta a una direccin IP distinta de los nodos. Lo recomendable es siempre
contar con un servidor dedicado para servir Memcached con una buena capacidad de Memoria RAM.
4.5. Consideraciones generales
Tome en cuenta que para que este escenario sea funcional, usted deber de disponer de un directorio
servido a travs de NFS server, con los archivos correspondientes a la aplicacin que desea poder como
alta disponibilidad, por lo tanto requerir de un servidor adicional con NFS Server.
Igualmente para que los servicios operen sin problemas sobre todo si se dispone de servicios que
acceden a bases de datos, ser necesario con tar con un servicio NTP, para mantener sincronizados los
relojes de cada uno de los servidores utilizados.
V. Gluster FS
GlusterFS es un Sistema Distribuido de Archivos del tipo Open Source, que brinda las capacidad de
crecer y escalar en cuanto a almacenamiento, hasta un valor que alcanza los petabytes. Igualmente
como es un disco distribuido en un espacio de red, mientras ms equipos sean pegados al arreglo de
red, brindar mayor capacidad para aceptar a miles de clientes. Para ms detalle vea la figura siguiente.

Gluster soporta clientes estandar a travs de diferentes protocolos de archivos como pueden ser:
glusterfs (nativo), nfs, samba, entre otros. Cada uno de los diferentes protocolos deber de ser adaptado
segn la necesidad de las aplicaciones o de los usuarios.
En otras palabras glusterFS brinda la capacidad de crecer y escalar en caliente agregando ms
dispositivos a un volumen ya creado, sin alterar la funcionabilidad de los dispositivos ya instalados.
Para el desarrollo del ejemplo siguiente, tomo en cuenta la topologa que se plantea a continuacin:

Gua No. 6 Servicios Web -v3-DM 16/25

Discoduroa
disposicindela
redydeusuarios

Red

Nodo1
172.16.100.2

Nodo2
172.16.100.3

Nodo3
172.16.100.4

Nodo4
172.16.100.5

Se segurin los pasos para configurar un arreglo con GlusterFS, segn la figura anterior, aspectos
relacionados al tipo de arreglo, quedarn fuera de la gua, puede documentarse en el portal del paquete.
Para realizar la configuracin completa se realizar la instalacin de glusterfs, la preparacin de las
particiones de disco en cada uno de los servidores as como, la creacin del volumen virtual que se
compartir en la red.
5.1. Instalando glusterfs
#aptgetinstallglusterfsserver

5.2. Preparacin de particiones en cada uno de los Nodos


Para disponer de un espacio de almacenamiento en cada Nodo, ser necesario preparar las particiones
que participarn del volumen virtual. Tome en cuenta que glusterfs trabaja a travs de bloques de disco
para integrarlos a un volumen llamados bricks. Los bricks son la unidad bsica de disco que se integra
a un volumen, para hacerlo crecer y escalar.
Asumiremos que cada nodo dispone de una particin de disco, que estar disponible para utilizarla en
el arreglo, para esta gua se asumir cada Nodo dispone de un 1Gb de espacio donde se crearn dos
bricks por cada servidor de 500Mb de espacio cada uno.
Gua No. 6 Servicios Web -v3-DM 17/25

Para prerapar la particin siga los pasos siguientes, asumiendo que el disco es: /dev/sdbse crearn
dos particiones de 500Mb cada una.
5.2.1. Instalando parted
Parted es una aplicacin que parmite la manipulacin de las tablas de particiones de discos, de
diferentes tamaos y etiquetas.
#aptgetinstallparted
5.2.2. Preparando particin
Para el caso de la gua se ha agregado un nuevo disco a la mquina virtual (Ir a
configuracin+Almacenamiento+Control: SATA) a cada uno de los servidores que harn los Nodos de
glusterfs.
Luego de arrancar es necesario, entonces listar los discos que estn en el sistema; para ello hacemos los
siguiente:
#fdiskl

Esto nos devolver una salida como la siguiente:


Disk/dev/sda:8589MB,8589934592bytes
255heads,63sectors/track,1044cylinders,total16777216sectors
Units=sectorsof1*512=512bytes
Sectorsize(logical/physical):512bytes/512bytes
I/Osize(minimum/optimal):512bytes/512bytes
Diskidentifier:0x0002bb1a
DeviceBootStartEndBlocksIdSystem
/dev/sda1*204815988735799334483Linux
/dev/sda215990782167751673921935Extended
/dev/sda5159907841677516739219282Linuxswap/Solaris
Disk/dev/sdb:8589MB,8589934592bytes
255heads,63sectors/track,1044cylinders,total16777216sectors
Units=sectorsof1*512=512bytes
Sectorsize(logical/physical):512bytes/512bytes
I/Osize(minimum/optimal):512bytes/512bytes
Diskidentifier:0x00000000

Note que hay dos discos en el equipo, uno que logra reconocer la orden fdiskl (/dev/sda), y
muestra su contenido y otro que no tiene una tabla de particin creada (/dev/sdb); en el cual se
trabajar.
Entramos al modo de configuracin de parted.
Gua No. 6 Servicios Web -v3-DM 18/25

#parted/dev/sdb
(parted)
Listando las particiones actuales.
(parted)print
Error:/dev/sdb:unrecogniseddisklabel
Model:ATAVBOXHARDDISK(scsi)
Disk/dev/sdb:8590MB
Sectorsize(logical/physical):512B/512B
PartitionTable:unknown
DiskFlags:

Note que se ha utilizado dentro de parted la orden print, si usted desea conocer todas las posibles
rdenes puede utilizarhelp.
Este disco posee 8590 Mb de espacio, al cual an no se le ha definido una tabla de particiones.
Debe de tomar en cuenta que cuando se est trabajando con servicios de este tipo; los arreglos de discos
debern de crearsele una tabla de particiones acorde. En otras palabras, la tabla de particiones mostrada
anteriormente corresponde con un tipo msdos, utilizada en sistemas Linux y Windows, donde se
requiere alguna particin para botear; pero si nicamente se trabaja con discos de almacenamiento es
recomendable utilizar una tabla con etiquetagpt, que permitir crear particiones grandes.
Lo primero que debe hacer es crearle una etiqueta para la tabla de particiones; de tal manera, que pueda
trabajar en l sin problema con el tipo de archivo xfs. Para ello haga lo siguiente:

(parted)mklabel
Newdisklabeltype?gpt

Note que se le est pasando como tipo de label para la tabla de particiones gpt. Luego de esta accin, el
disco podr estar listo para empezar a agregar las particiones que se desean.
Volvamos a ver la tabla de particiones del disco con la orden print.
(parted)print
Model:ATAVBOXHARDDISK(scsi)
Disk/dev/sdb:8590MB
Sectorsize(logical/physical):512B/512B
PartitionTable:gpt
DiskFlags:
NumberStartEndSizeFilesystemNameFlags

A diferencia de la primera salida de print, en los prrafos anteriores; ahora, ya reconoce la tabla de
particiones (Partition Table).
Gua No. 6 Servicios Web -v3-DM 19/25

A partir de esto, ya se est listo para crear particiones nuevas. Se crearn cuatro particiones de 500Mb
cada una. De la siguiente forma.
(parted)mkpart
Partitionname?[]?1
Filesystemtype?[ext2]?xfs
Start?1
End?5001

Ahora vea la salida siguiente el print de particiones en parted


(parted)print
Model:ATAVBOXHARDDISK(scsi)
Disk/dev/sdb:8590MB
Sectorsize(logical/physical):512B/512B
PartitionTable:gpt
DiskFlags:
NumberStartEndSizeFilesystemNameFlags
11049kB5001MB5000MBxfs1

Note que se creo la particin de 500MB. Ahora se crear una segunda particin, usted puede proceder a
crear el resto de particiones.
(parted)mkpart
Partitionname?[]?2
Filesystemtype?[ext2]?xfs
Start?501
End?1001

El inicio de la segunda particin deber coincidir con el final de la particin anterior. La salida ahora
con print es:
(parted)print
Model:ATAVBOXHARDDISK(scsi)
Disk/dev/sdb:8590MB
Sectorsize(logical/physical):512B/512B
PartitionTable:gpt
DiskFlags:
NumberStartEndSizeFilesystemNameFlags
11049kB501MB500MB1
2501MB1001MB500MB2

Se han definido las dos particiones con nombres 1 y 2; de tal manera que de forma lgica en el sistema
operativo corresponder a /dev/sdb1 y /dev/sdb2, respectivamente.

Gua No. 6 Servicios Web -v3-DM 20/25

5.2.3. Formateando particin


Luego de crear la particin deber proceder a formatearla, con un sistema de archivos xfs, el cual tiene
como funcionabilidad permitir archivos grandes mas all de los 4Gb.
#mkfs.xfsisize=512/dev/sdb1

Si la orden anterior le devuelve error, puede ser que el paquete que da soporte al sistema de archivos
xfs no est instalado. Deber instalar el paquete xfsprogs.
Si todo marcha bien, deber de devolverle una salida con la informacin de la nueva particin recin
formateada.
metadata=/dev/sdb1isize=512agcount=4,agsize=30528blks
=sectsz=512attr=2,projid32bit=1
=crc=0finobt=0
data=bsize=4096blocks=122112,imaxpct=25
=sunit=0swidth=0blks
naming=version2bsize=4096asciici=0ftype=0
log=internallogbsize=4096blocks=855,version=2
=sectsz=512sunit=0blks,lazycount=1
realtime=noneextsz=4096blocks=0,rtextents=0

5.2.4. Montando la particin en el Nodo local


Deber crear una ruta de directorios de trabajo para montar las particiones creadas.
#mkdirp/srv/sdb1/brick
#mount/dev/sdb1/srv/sdb1/brick
#mkdirp/srv/sdb2/brick
#mount/dev/sdb2/srv/sdb2/brick

Tenga en cuenta que por cada particin que prepare en el equipo, siempre deber crear una carpeta para
los brick de dicha particin. Si creara una particin adicional /dev/sdb3, igualmente deber de
trabajar los correspondientes directorios.
Puede verificar que las particiones estn debidamente montadas con la orden dfh.
5.2.5. Creando las entradas en archivo fstab
Es necesario que las particiones trabajas, sean montadas cuando el sistema operativo arranque, para ello
es necesario crear las entradas correspondiente en el archivo /etc/fstab. Agregando la entrada para
dicha particin o particiones, si fuese el caso, al final del archivo.

Gua No. 6 Servicios Web -v3-DM 21/25

/etc/fstab
..
..
#ParaGlusterfs
/dev/sdb1/srv/sdb1/brickxfsdefaults00
/dev/sdb2/srv/sdb2/brickxfsdefaults00

Si usted agrega los parmetros correspondientes a este archivo y por alguna razn no se han montado
las particiones al arranque del SO; podra montarlas todas de una vez con la orden: mounta&&
mount.
5.3. Configurando el volumen
Un volumen en glusterfs tiene el mismo significado que en un disco tradicional. La nica diferencia es
que se crear un volumen virtual a travs de la red, del cual formarn parte muchos bricks.
A este punto se asumir que ya se tienen preparados todos los nodos, con las particiones debdamente
formateadas y montadas, as como glusterfs instalado.
La configuracin que se detalla a continuacin podr realizarla en cualesquiera de los Nodos de
glusterfs.
Recuerde que este es un disco duro de red, que no residir en ningn espacio de cada servidor si no ms
bien en el espacio en conjunto de cada nodo.
5.3.1. Agregando Nodos
Para agregar nodos a un volumen nuevo, se debe de efectuar una prueba inicial al nodo. A travs de
dicha prueba glusterfs-server local descubre y agrega al nodo para poder utilizar los bricks con lo que
este cuenta. A continuacin se detalla el descubriemiento del Nodo propio del servidor, as como un
Nodo remoto, para poder agregar los bricks al volumen.
Asumiendo que se est en el Nodo1, deber de corrrse las siguientes rdenes.
#glusterpeerprobe172.16.100.2
#glusterpeerprobe172.16.100.3
#glusterpeerprobe172.16.100.4
#glusterpeerprobe172.16.100.5

Note que la primera direccin IP corresponde con el Nodo donde se estn realizando las
configuraciones. Este valor deber de devolver un mensaje notificando que no es necesario que se
testee el nodo, por ser local.
5.3.2. Creando volumen Distribuido y Replicado (Distributed Replicated)
#glustervolumecreategv0replica2172.16.100.2:/srv/sdb1/brick
172.16.100.3:/srv/sdb1/brick172.16.100.4:/srv/sdb1/brick
172.16.100.5:/srv/sdb1/brick
Creationoftestvolumehasbeensuccessful

Gua No. 6 Servicios Web -v3-DM 22/25

Pleasestartthevolumetoaccessdata.

Se est creado un volumen replicado con replica 2, esto quiere decir para que el volumen escale en
tamao deberan agregarse dos bricks en cada vez; de tal manera que los datos estn en forma de espejo,
pero que la vez permita crecer el disco duro. Es importante que los pares estn en servidores o Nodos
diferentes para que la replica tenga sentido.
Si todas las particiones creadas para este caso son de 500Mb, el volumengv0 tendr un tamao de
1Gb auque se hayan agregado 4 Nodos.
Si la orden anterior no se ejecuta exitosamente, puede ser necesario agregar el parmetro force al
final.
Para mayor referencia de los modos de crear volumenes virtuales remitase a la Gua de
Administracin de GlusterFS.
5.3.3. Iniciando el volumen
Luego que se ha creado el volumen, deber de iniciarse, para poder hacer uso del espacio de
almamiento creado.
#glustervolumestartgv0

5.3.4. Mostrando la informacin del volumen


Cuando ya se ha creado el volumen, no podr verlo como un disco duro ms en su equipo, a no ser que
lo monte en una ruta especfica. Para ver la informacin en cuanto a nodos y tipo, usted puede hacerlo
con la siguiente orden:
#glustervolumeinfogv0

5.3.5. Montando el volumen


Hasta este punto ya deber de tenerse el volumen gv0 como disco duro virtual, o servicio de archivos
en la Nube. Para hacer uso de dicho espacio de almacenamiento, nicamente se deber de disponer de
una carpeta local en los Nodos Apache como punto de montaje.
A continuacin se crear un punto de montaje, as como se realizar el montaje del mismo, con el
sistema de archivos nativo de glusterfs.
#mkdir/mnt/gluster

#mounttglusterfs172.16.100.2:/gv0/mnt/gluster
Tome en cuenta que como es un servicio creado a partir de la nube, y correo en los cuatro Nodos, usted
podr utilizar cualesquiera de los nodos para invocar al volumen virtual gv0; de tal suerte de que la
orden anterior podr funcionar con cualesquiera de las IP de los nodos.
Gua No. 6 Servicios Web -v3-DM 23/25

Ya montado el volumen usted podr disponer de l como una carpeta ms. A medida que vaya
agregando bricks de Nodos adicionales al volumen, este crecer en tamao hasta alcanzar un valor
de petabytes.
Igualmente si uested desea que el volumen se monte al arranque deber de crear las entradas
correspondientes en el archivo /etc/fstab.
5.3.6. Montando el volumen con NFS
Glusterfs implementa de forma alternativa los protocolos de archivos NFS v3, y CIFS/Samba. El
primero para trabajar en ambientes GNU/Linux, y el segundo para ser accedidos a traves de ambientes
Windows.
Para montar el volumen virtual gv0 creado, cree una carpeta que sirva como punto de montaje. El
nombre de la carpeta es indiferente.
#mkdir/mnt/nfs

#mounttnfsovers=3172.16.100.2:/gv0/mnt/nfs
Por default glusterfs server no soporta conexiones NFS a travs de puertos UDP, por lo tanto si el
cliente devuelve error al tratar de realizar la accin anterior, usted deber especificar que trabajar la
peticin con puertos TCP.
#mounttnfsomountproto=tcp,vers=3172.16.100.2:/gv0/mnt/nfs

5.3.7. Expandiendo el volumen


La idea de glusterfs es tener un volumen virtual que pueda crecer segn la infraestructura de servidores
que vayan siendo agregados a la red. Esto sin necesidad de detener o desmontar el volumen cuando se
encuentre montado. Entonces para expandir el volumen anterio gv0, recuerde que deber agregar al
menos dos bricks ms, puesto que se tiene una replica dos. Para ello haga lo siguiente.
Si fuera el caso que se han agregado dos servidores nuevos con las siguientes direcciones IP
172.16.100.6 y 172.16.100.7; a los cuales se les ha realizado las mismas configuraciones en cuanto a
particiones, como los restante cuatro ya agregados al volumen.
Se detectan los Nodos debidamente configurados con glusterfs.
#glusterpeerprobe172.16.100.6
#glusterpeerprobe172.16.100.7

Se expande el volumen:
#glustervolumeaddbrickgv0172.16.100.6:/srv/sdb1/brick
172.16.100.7:/srv/sdb1/brick172.16.100.6:/srv/sdb2/brick
172.16.100.7:/srv/sdb2/brick

Gua No. 6 Servicios Web -v3-DM 24/25

VI. Requerimiento de Laboratorio.

En equipos como mximo de tres participantes y a partir de la topologa anterior; apoyndose en las
herramientas GNS3 y VirtualBox se le pide:
1. Implementar un Portal Web con un CMS de su eleccin con capacidades Web 2.0.
2. Brindar capacidades de Alta Redundancia y Alto Rendimiento a travs de Apache.
3. Implementar un servicio para el almacenamiento y consulta de Sesiones a travs de Memcached.
4. Implementar un servicio de Bases de Datos con MySQL como soporte del CMS.
5. Implementar NAT 1:1, en el Firewall de frontera para renviar las peticiones al Balanceador de Carga.
6. Implementar el servicio NFS, para brindar carpetas remotas a los Nodos, a travs de GlusterFS, con
los Nodos 1,2,3 y 4 de Apache participen del Disco de Red.
7. Implementar un servicio Web Https, para la seccin de Autenticacin de Usuarios al CMS
8. Implementar un servicio Web Http, para consultas generales al CMS.
9. Implementar un servicio de DNS, para el establecimiento de Nombres de Dominio para la
infraestructura.
10. Implementar un servicio de monitoreo a travs de SNMP, utilizando Zabbix.

Gua No. 6 Servicios Web -v3-DM 25/25

Vous aimerez peut-être aussi